केवल स्थिति द्वारा दिए जाने वाले आर्गुमेंट्स
जब आप Python में आगे बढ़ते हैं, तो आपको फ़ंक्शन आर्गुमेंट्स की अवधारणा से परिचित होना पड़ेगा। Python में, फ़ंक्शन्स को आर्गुमेंट्स पास करने के विभिन्न तरीक़े हैं। हमारे पास डिफ़ॉल्ट आर्गुमेंट्स, कीवर्ड आर्गुमेंट्स, और पोज़िशनल आर्गुमेंट्स होते हैं। लेकिन एक विशिष्ट प्रकार के आर्गुमेंट्स भी होते हैं जिन्हें केवल स्थिति द्वारा ही दिया जा सकता है, जिन्हें पोज़िशनल-ओनली आर्गुमेंट्स कहा जाता है।
Python 3.8 से शुरू होकर, फ़ंक्शन डेफ़िनिशन में
/
नामक एक विशेष सिंटैक्स का उपयोग किया जाता है जिससे यह संकेत मिलता है कि कुछ आर्गुमेंट्स केवल स्थिति द्वारा ही दिए जा सकते हैं। पोज़िशनल-ओनली आर्गुमेंट्स फ़ंक्शन डेफ़िनिशन में /
से पहले आते हैं।मान लीजिए हमारे पास एक फ़ंक्शन है जो तीन संख्याओं को जोड़ता है:
def add_numbers(a, b, c):
return a + b + c
हम इस फ़ंक्शन को उनके परिभाषित क्रम में आर्गुमेंट्स देकर कॉल कर सकते हैं, जो कि स्थिति द्वारा है:
print(add_numbers(10, 20, 30))
# outputs: 60
और हम इसे आर्गुमेंट्स के नामों का उपयोग करते हुए भी कॉल कर सकते हैं, जिसे कीवर्ड द्वारा कहा जाता है:
print(add_numbers(a=10, b=20, c=30))
# outputs: 60
लेकिन अगर हम यह सुनिश्चित करना चाहते हैं कि कुछ आर्गुमेंट्स हमेशा एक विशिष्ट क्रम में ही दिए जाएं? तब पोज़िशनल-ओनली आर्गुमेंट्स काम आते हैं। आइए
add_numbers
फ़ंक्शन को संशोधित करते हैं ताकि a
और b
पोज़िशनल-ओनली हों:def add_numbers(a, b, /, c):
return a + b + c
अब हम इस फ़ंक्शन को स्थिति द्वारा आर्गुमेंट्स देकर कॉल कर सकते हैं:
print(add_numbers(10, 20, 30)) # 60
print(add_numbers(a=10, b=20, c=30)) # TypeError
print(add_numbers(10, 20, c=30)) # 60
लेकिन यदि हम पोज़िशनल-ओनली आर्गुमेंट्स को कीवर्ड आर्गुमेंट्स के रूप में देने की कोशिश करते हैं, तो हमें
TypeError
मिलेगा। इस स्थिति में, हमें a
और b
को स्थिति द्वारा ही देना होगा। आर्गुमेंट c
को स्थिति या कीवर्ड किसी भी तरीके से दिया जा सकता है।तो, पोज़िशनल-ओनली आर्गुमेंट्स के लिए सिंटैक्स है:
- पोज़िशनल-ओनली आर्गुमेंट्स फ़ंक्शन डेफ़िनिशन में
/
से पहले आते हैं।
- यदि फ़ंक्शन डेफ़िनिशन में
/
है, तो उसके पहले के आर्गुमेंट्स पोज़िशनल-ओनली हैं।
- पोज़िशनल-ओनली आर्गुमेंट्स को कीवर्ड द्वारा पास नहीं किया जा सकता।
/
के बाद के आर्गुमेंट्स को स्थिति या कीवर्ड दोनों तरीकों से पास किया जा सकता है।
क्या Python में ऐसे बिल्ट-इन फ़ंक्शंस हैं जिनमें पोज़िशनल-ओनली आर्गुमेंट्स होते हैं?
हाँ, Python के कई बिल्ट-इन फ़ंक्शंस में पोज़िशनल-ओनली आर्गुमेंट्स होते हैं। उदाहरण के लिए,
abs()
फ़ंक्शन एक अच्छा उदाहरण है:help(abs)
# Help on built-in function abs in module builtins:
# abs(x, /)
# Return the absolute value of the argument.
abs(-6) # 6
abs(x=-6) # TypeError: abs() takes no keyword arguments
abs
में पैरामीटर x
एक पोज़िशनल-ओनली आर्गुमेंट है, और जब हम इसे कीवर्ड आर्गुमेंट के रूप में फ़ंक्शन कॉल में देने की कोशिश करते हैं, तो प्रोग्राम TypeError
देता है।