जब हम पायथन प्रोग्राम में एक फ़ंक्शन परिभाषित करते हैं, तो उद्देश्य फ़ंक्शन के तर्कों को अलग-अलग मान प्रदान करके कोड को बार-बार निष्पादित करना होता है। इस डिज़ाइन में एक चुनौती यह है, क्या होगा यदि हमें हर बार उस फ़ंक्शन को कॉल करते समय संसाधित किए जाने वाले तर्कों की संख्या के बारे में यकीन नहीं है। यहीं पर **args और **kwargs कहलाने वाले विशेष तर्कों की आवश्यकता होती है। आइए उन्हें एक-एक करके देखें।
*args
*args हमें फ़ंक्शन के इनपुट के रूप में परिवर्तनीय संख्या में तर्कों का उपयोग करने में सक्षम बनाता है। नीचे दिए गए उदाहरण में हम संख्याओं की एक श्रृंखला के गुणन का परिणाम ढूंढ रहे हैं। इन संख्याओं की गिनती हर बार फ़ंक्शन को कॉल करने पर भिन्न होती है।
उदाहरण
def findproduct(*many_nums):
result = 1
for num in many_nums:
result = result * num
print("गुणनफल परिणाम:", result)
findproduct(3, 9)
findproduct(2, 11, 10)
आउटपुट
('गुणनफल परिणाम:', 27)
('गुणनफल परिणाम:', 220)
**kwargs
अगला, ऐसे परिदृश्य होते हैं जब हम कीवर्ड तर्क पास करना चाहते हैं, जो मूल रूप से तर्क के रूप में फ़ंक्शन को कुंजी-मान जोड़े होते हैं।
यहाँ फिर से, हम फ़ंक्शन को ऐसे कीवर्ड तर्कों की परिवर्तनीय संख्या पास कर सकते हैं। ऐसे तर्कों को **kwargs नाम दिया गया है। कृपया ध्यान दें कि ऐसे तर्कों का उपयोग करते समय दो एस्टरिस्क होते हैं। वास्तव में, ऐसे कीवर्ड तर्कों को प्रोग्राम में पायथन डिक्शनरी के रूप में पास किया जाता है जिसमें कई कुंजी-मान जोड़े होते हैं।
उदाहरण
def country_details(**state_info):
print('\n\n')
for k, v in state_info.items():
print("{} is {}".format(k, v))
country_details(StateName="Telangana", Capital="Hyderabad", Population=3400000)
country_details(StateName="Andhra Pradesh", Capital="Amaravati", Population=1000000, ForestCoverage="30%")
आउटपुट
StateName is Telangana Population is 3400000 Capital is Hyderabad StateName is Andhra Pradesh Population is 1000000 ForestCoverage is 30% Capital is Amaravati