जब हम एक पायथन प्रोग्राम में एक फ़ंक्शन को परिभाषित करते हैं, तो इसका उद्देश्य फ़ंक्शन के तर्कों के लिए अलग-अलग मानों की आपूर्ति करके कोड को बार-बार निष्पादित करना होता है। इस डिज़ाइन में एक चुनौती यह है कि क्या होगा यदि हम उस फ़ंक्शन को कॉल करने पर हर बार संसाधित किए जाने वाले तर्कों की संख्या के बारे में सुनिश्चित नहीं हैं। यह वह जगह है जहां **args और **kwargs नामक विशेष तर्कों की आवश्यकता होती है। आइए उन्हें एक-एक करके देखें।
*args
*args हमें फ़ंक्शन में इनपुट के रूप में तर्कों की चर संख्या का उपयोग करने में सक्षम बनाता है। नीचे दिए गए उदाहरण में हम संख्याओं की एक श्रृंखला के गुणन के परिणाम का पता लगा रहे हैं। हर बार जब हम फ़ंक्शन को कॉल करते हैं तो इन नंबरों की संख्या अलग-अलग होती है।
उदाहरण
def findproduct(*many_nums): result = 1 for num in many_nums: result = result * num print("Multiplication result:",result) findproduct(3,9) findproduct(2,11,10)
आउटपुट
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
('Multiplication result:', 27) ('Multiplication result:', 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