चूँकि अजगर 3.8 ने केवल स्थैतिक तर्क प्रस्तुत किए थे, इसलिए इस पोस्ट को अपडेट की आवश्यकता है
स्थिति संबंधी तर्क, कीवर्ड तर्क, आवश्यक तर्क और वैकल्पिक तर्क अक्सर भ्रमित होते हैं। स्थिति संबंधी तर्क समान तर्क के रूप में आवश्यक नहीं हैं । और कीवर्ड तर्क वैकल्पिक तर्क के रूप में समान नहीं हैं ।
स्थिति संबंधी तर्क वे तर्क हैं जिन्हें फ़ंक्शन परिभाषा में अपनी स्थिति से बुलाया जा सकता है।
कीवर्ड तर्क वे तर्क होते हैं जिन्हें उनके नाम से पुकारा जा सकता है।
आवश्यक तर्क वे तर्क हैं जो फ़ंक्शन को पास किए जाने चाहिए।
वैकल्पिक तर्क वे तर्क हैं जिन्हें फ़ंक्शन में पारित नहीं किया जा सकता है। अजगर में वैकल्पिक तर्क वे तर्क होते हैं जिनका डिफ़ॉल्ट मान होता है ।
स्थितिगत तर्क जो वैकल्पिक है (अजगर 3.8)
def f(a=2, /):
pass
f()
f(1)
f(a=1)
स्थिति संबंधी तर्क की आवश्यकता है (अजगर 3.8)
def f(a, /):
pass
f()
f(1)
f(a=1)
कीवर्ड तर्क जो वैकल्पिक है
def f(*, a=1):
pass
f()
f(1)
f(a=1)
कीवर्ड तर्क जो आवश्यक है
def f(*, a)
pass
f() # Error, argument required
f(1) # Error, keyword only arguments
f(a=1) # Allowed, it's a keyword argument
स्थिति और कीवर्ड तर्क वैकल्पिक है
def f(a=1)
pass
f() # Allowed, argument is optional
f(1) # Allowed, it's a positional argument
f(a=1) # Allowed, it's a keyword argument
# In fact this function is the same as
def f(*, a=1, /):
pass
स्थिति और कीवर्ड तर्क की आवश्यकता है
def f(a):
pass
f()
f(1)
f(a=1)
def f(*, a, /):
pass
निष्कर्ष, एक तर्क वैकल्पिक हो सकता है या एक ही समय में दोनों की आवश्यकता नहीं है । यह एक ही समय में स्थितीय, कीवर्ड या दोनों भी हो सकता है ।
पायथन 3.8 ने केवल परिधीय मापदंडों को पेश किया ।
def f(positional_argument, /, positional_or_keyword_argument, *, keyword_argument):
pass