সাহায্য () আউটপুটে স্ল্যাশ বলতে কী বোঝায়?


148

বন্ধ বন্ধনীর আগে /পাইথন 3.4 এর helpআউটপুটটির অর্থ কী range?

>>> help(range)
Help on class range in module builtins:

class range(object)
 |  range(stop) -> range object
 |  range(start, stop[, step]) -> range object
 |  
 |  Return a virtual sequence of numbers from start to stop by step.
 |  
 |  Methods defined here:
 |  
 |  __contains__(self, key, /)
 |      Return key in self.
 |  
 |  __eq__(self, value, /)
 |      Return self==value.

                                        ...

উত্তর:


185

এটি অবস্থানগত কেবলমাত্র পরামিতিগুলির সমাপ্তি নির্দেশ করে , প্যারামিটারগুলি আপনি কীওয়ার্ড প্যারামিটার হিসাবে ব্যবহার করতে পারবেন না । পাইথন ৩.৮ এর আগে এই জাতীয় প্যারামিটারগুলি কেবলমাত্র সিপিআইতে নির্দিষ্ট করা যেতে পারে।

এর অর্থ হ'ল keyআর্গুমেন্টটি __contains__কেবল অবস্থান ( range(5).__contains__(3)) দ্বারা পাস করা যেতে পারে , কীওয়ার্ড আর্গুমেন্ট ( range(5).__contains__(key=3)) হিসাবে নয় , খাঁটি-পাইথন ফাংশনে অবস্থানগত যুক্তি দিয়ে আপনি কিছু করতে পারেন

এছাড়াও আর্গুমেন্ট ক্লিনিক ডকুমেন্টেশন দেখুন:

সমস্ত পরামিতিগুলি কেবলমাত্র আর্গুমেন্ট ক্লিনিকে পজিশনাল হিসাবে চিহ্নিত করতে /, শেষ প্যারামিটারের পরে নিজেই একটি লাইনে একটি যুক্ত করুন, প্যারামিটার লাইনের সমান ইন্ডেন্ট করা।

এবং (খুব সাম্প্রতিক সংযোজন) পাইথন এফএকিউ :

কোনও ফাংশনের আর্গুমেন্ট তালিকার একটি স্ল্যাশ বোঝায় যে এর আগে পরামিতিগুলি কেবলমাত্র অবস্থানগত। বাহ্যিক-ব্যবহারযোগ্য নাম ব্যতীত পজিশনাল-কেবলমাত্র পরামিতিগুলি। কেবলমাত্র পজিশনীয়-পরামিতি গ্রহণ করে এমন একটি ফাংশন কল করার পরে, যুক্তিগুলি কেবলমাত্র তাদের অবস্থানের ভিত্তিতে পরামিতিগুলিতে ম্যাপ করা হয়।

বাক্য গঠনটি এখন পাইথন ভাষার স্পেসিফিকেশনের অংশ, সংস্করণ 3.8 অনুযায়ী , পিইপি 570 দেখুন - পাইথন অবস্থানগত-কেবলমাত্র পরামিতি । পিইপি 570 এর আগে সিন্থ্যাক্সটি ইতিমধ্যে পাইথনে ভবিষ্যতের সম্ভাব্য অন্তর্ভুক্তির জন্য সংরক্ষিত ছিল, পিইপি 457 দেখুন - পজিশনাল-কেবল পরামিতিগুলির জন্য সিনট্যাক্স

পজিশনাল-কেবলমাত্র প্যারামিটারগুলি ক্লিনার এবং ক্লিয়ারার এপিআইগুলিতে নেতৃত্ব দিতে পারে, অন্যথায় সি-কেবলমাত্র মডিউলগুলির খাঁটি-পাইথন বাস্তবায়নকে আরও সামঞ্জস্যপূর্ণ এবং বজায় রাখা সহজতর করে এবং অবস্থানগত-কেবলমাত্র প্যারামিটারগুলিতে খুব কম প্রক্রিয়াজাতকরণের প্রয়োজন হয়, তারা দ্রুত পাইথন কোডের দিকে নিয়ে যায়।


22

আমি এই প্রশ্নটি নিজেই জিজ্ঞাসা করেছি। :) /এটি এখানে গুডো মূলত প্রস্তাব করেছিল তা খুঁজে পেল ।

বিকল্প প্রস্তাব: '/' ব্যবহার সম্পর্কে কীভাবে? এটি '*' এর বিপরীতে যার অর্থ "কীওয়ার্ড আর্গুমেন্ট" এবং '/' কোনও নতুন চরিত্র নয়।

তারপরে তার প্রস্তাব জিতেছে

হেহ। যদি এটি সত্য হয় তবে আমার '/' প্রস্তাবটি জিতবে:

 def foo(pos_only, /, pos_or_kw, *, kw_only): ...

আমি মনে করি খুব প্রাসঙ্গিক এই আচ্ছাদন নথি PEP 570 । যেখানে সংশোধন বিভাগটি দুর্দান্ত দেখাচ্ছে।

সংক্ষিপ্তবৃত্তি

ব্যবহারের ক্ষেত্রে ফাংশন সংজ্ঞাতে কোন পরামিতিগুলি ব্যবহার করতে হবে তা নির্ধারণ করবে:

 def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):

গাইডেন্স হিসাবে:

কেবলমাত্র নামগুলির কোনও অর্থ না থাকলে বা এর অর্থ না থাকলে অবস্থানগত ব্যবহার করুন এবং কেবলমাত্র কয়েকটি যুক্তি রয়েছে যা সর্বদা একই ক্রমে উত্তীর্ণ হবে। শুধুমাত্র কীওয়ার্ড ব্যবহার করুন যখন নামের অর্থ থাকে এবং নামগুলির সাথে স্পষ্ট হয়ে ফাংশন সংজ্ঞাটি আরও বোধগম্য হয়।


যদি ফাংশনটি শেষ হয় /

def foo(p1, p2, /)

এর অর্থ সমস্ত কার্যকারী আর্গুমেন্ট অবস্থানগত position


6
/টোকেনটি বেছে নেওয়া , কারণ "এটি এর বিপরীতমুখী অপারেশন *" শোগুলি দেখায়, পাইথন খানিকটা পাগল। এটি এক প্রকার সিনসথেসিয়া।
টমাসজ গ্যান্ডার

6

ফরোয়ার্ড স্ল্যাশ (/) এর পূর্বে সমস্ত আর্গুমেন্টগুলি কেবলমাত্র অবস্থানগত যুক্তিই নির্দেশ করে। পিইপি 570 গ্রহণের পরে অবস্থানগত কেবল আর্গুমেন্ট বৈশিষ্ট্যটি পাইথন 3.8 এ যুক্ত করা হয়েছিল। প্রাথমিকভাবে এই স্বরলিপিটি PEP 457 - পজিশনাল-কেবলমাত্র পরামিতিগুলির জন্য স্বরলিখনের জন্য সংজ্ঞায়িত করা হয়েছিল

পূর্ববর্তী ফোরওয়ার্ড স্ল্যাশ (/) ফাংশন সংজ্ঞায়িত পরামিতিগুলি কেবলমাত্র অবস্থানগত এবং স্ল্যাশ (/) অনুসারে প্যারামিটারগুলি সিনট্যাক্স অনুযায়ী যে কোনও ধরণের হতে পারে। যেখানে আর্গুমেন্টগুলি কেবলমাত্র পরামিতিগুলিতে কোনও ফাংশন কল করার পরে তাদের অবস্থানের ভিত্তিতে ম্যাপ করা হয়। কীওয়ার্ড (নাম) দ্বারা অবস্থানগত-পরামিতিগুলি পাস করা অবৈধ।

আসুন নিম্নলিখিত উদাহরণ গ্রহণ করা যাক

def foo(a, b, / , x, y):
   print("positional ", a, b)
   print("positional or keyword", x, y)

এখানে উপরের ফাংশন সংজ্ঞা পরামিতিগুলিতে a এবং b অবস্থানগত কেবলমাত্র, যখন x বা y হয় অবস্থানগত বা কীওয়ার্ড হতে পারে।

নিম্নলিখিত ফাংশন কলগুলি বৈধ

foo(40, 20, 99, 39)
foo(40, 3.14, "hello", y="world")
foo(1.45, 3.14, x="hello", y="world")

তবে, নিম্নলিখিত ফাংশন কলটি বৈধ নয় যা একটি ব্যতিক্রম টাইপরর উত্থাপন করে যেহেতু a, b স্থিতি যুক্তি হিসাবে পরিবর্তিত হয়নি পরিবর্তে কীওয়ার্ড হিসাবে পাস করা হয়েছে

foo(a=1.45, b=3.14, x=1, y=4)

প্রকারের ত্রুটি: foo () কেবলমাত্র কিছু আর্গুমেন্ট পেয়েছে কীওয়ার্ড আর্গুমেন্ট হিসাবে: 'এ, বি'

পাইথনে ফাংশনে অন্তর্নির্মিত অনেকেই কেবলমাত্র অবস্থানগত আর্গুমেন্ট গ্রহণ করেন যেখানে কীওয়ার্ড দিয়ে যুক্তিগুলি পাস করার অর্থ হয় না। উদাহরণস্বরূপ অন্তর্নির্মিত ফাংশন লেন কেবলমাত্র একটি অবস্থানগত (কেবলমাত্র) যুক্তি গ্রহণ করে, যেখানে লেনকে লেন হিসাবে কল করা (اعتراض = "হ্যালো ওয়ার্ল্ড") পাঠ্যতা ব্যাহত করে, সহায়তা (লেন) পরীক্ষা করে।

>>> help(len)
Help on built-in function len in module builtins:

len(obj, /)
    Return the number of items in a container.

অবস্থানগত কেবল পরামিতিগুলি অন্তর্নিহিত সি / লাইব্রেরি ফাংশনগুলি বজায় রাখা সহজ করে তোলে। এটি এপিআই ব্যবহার করে এমন ক্লায়েন্ট কোড ভঙ্গ করার ঝুঁকি ছাড়াই অবস্থানগত পরামিতিগুলির পরামিতিগুলির নাম ভবিষ্যতে পরিবর্তন হতে পারে

সর্বশেষে তবে সর্বনিম্ন নয়, কেবলমাত্র অবস্থানের পরামিতিগুলি আমাদের নামগুলি পরিবর্তনশীল দৈর্ঘ্যের কীওয়ার্ড আর্গুমেন্টে ব্যবহার করার অনুমতি দেয়। নিম্নলিখিত উদাহরণ পরীক্ষা করুন

>>> def f(a, b, /, **kwargs):
...     print(a, b, kwargs)
...
>>> f(10, 20, a=1, b=2, c=3)         # a and b are used in two ways
10 20 {'a': 1, 'b': 2, 'c': 3}

পাইথনাল কেবলমাত্র পরামিতিগুলি এখানে অজগরটিতে ফাংশন আর্গুমেন্টের ধরণে আরও ভালভাবে ব্যাখ্যা করা হয় : পজিশনাল কেবলমাত্র পরামিতি

অবস্থানগত-কেবলমাত্র পরামিতি সিনট্যাক্সটি আনুষ্ঠানিকভাবে পাইথন 3.8 তে যুক্ত হয়েছিল। নতুন অজগর ৩.৮ কী - চেকআউট করুন কেবলমাত্র অবস্থানগত আর্গুমেন্ট

পিইপি সম্পর্কিত: পিইপি 570 - পাইথন অবস্থানগত-কেবলমাত্র পরামিতি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.