समस्या
आप एक ऐसा फ़ंक्शन लिखना चाहते हैं जो किसी भी संख्या में इनपुट तर्कों को स्वीकार करता हो।
समाधान
पायथन में * तर्क किसी भी तर्क को स्वीकार कर सकता है। इसे हम किसी दिए गए दो या दो से अधिक संख्याओं का औसत ज्ञात करने के उदाहरण से समझेंगे। नीचे दिए गए उदाहरण में, बाकी सभी अतिरिक्त तर्कों (हमारे मामले की संख्या में) का एक टपल पारित किया गया है। फ़ंक्शन तर्कों को औसत गणना करने में अनुक्रम के रूप में मानता है।
# Sample function to find the average of the given numbers def define_average(first_arg, *rest_arg): average = (first_arg + sum(rest_arg)) / (1 + len(rest_arg)) print(f"Output \n *** The average for the given numbers {average}") # Call the function with two numbers define_average(1, 2)
आउटपुट
*** The average for the given numbers 1.5
# Call the function with more numbers define_average(1, 2, 3, 4)
आउटपुट
*** The average for the given numbers 2.5
किसी भी संख्या में कीवर्ड तर्कों को स्वीकार करने के लिए, ** से शुरू होने वाले तर्क का उपयोग करें।
def player_stats(player_name, player_country, **player_titles): print(f"Output \n*** Type of player_titles - {type(player_titles)}") titles = ' AND '.join('{} : {}'.format(key, value) for key, value in player_titles.items()) print(f"*** Type of titles post conversion - {type(titles)}") stats = 'The player - {name} from {country} has {titles}'.format(name = player_name, country=player_country, titles=titles) return stats player_stats('Roger Federer','Switzerland', Grandslams = 20, ATP = 103)
आउटपुट
*** Type of player_titles - <class 'dict'> *** Type of titles post conversion - <class 'str'>
'The player - Roger Federer from Switzerland has Grandslams : 20 AND ATP : 103'
यहाँ ऊपर के उदाहरण में, player_titles एक ऐसा शब्दकोश है जिसमें पारित खोजशब्द तर्क होते हैं।
यदि आप ऐसा फ़ंक्शन चाहते हैं जो किसी भी संख्या में स्थितीय और कीवर्ड-केवल तर्कों को स्वीकार कर सके, तो * और ** का एक साथ उपयोग करें
def func_anyargs(*args, **kwargs): print(args) # A tuple print(kwargs) # A dict
इस फ़ंक्शन के साथ, सभी स्थितीय तर्कों को एक टपल आर्ग में रखा जाता है, और सभी कीवर्ड तर्कों को एक शब्दकोश kwargs में रखा जाता है।