समस्या
आप एक ऐसा फंक्शन लिखना चाहते हैं जो किसी भी संख्या में इनपुट आर्गुमेंट्स स्वीकार करे।
समाधान
पायथन में * आर्गुमेंट किसी भी संख्या में आर्गुमेंट्स स्वीकार कर सकता है। हम इसे किसी भी दी गई दो या अधिक संख्याओं का औसत ढूंढने के उदाहरण से समझेंगे। नीचे उदाहरण में, rest_arg पास किए गए सभी अतिरिक्त आर्गुमेंट्स (हमारे मामले में नंबर्स) का एक टपल है। फंक्शन औसत गणना करने में आर्गुमेंट्स को एक सीक्वेंस के रूप में मानता है।
# दी गई संख्याओं का औसत ढूंढने के लिए सैंपल फंक्शन
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}")
# दो संख्याओं के साथ फंक्शन कॉल करें
define_average(1, 2)
आउटपुट: The average for the given numbers 1.5
# अधिक संख्याओं के साथ फंक्शन कॉल करें
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 -
*** Type of titles post conversion -
'The player - Roger Federer from Switzerland has Grandslams : 20 AND ATP : 103'
उपरोक्त उदाहरण में, player_titles एक डिक्शनरी है जो पास किए गए कीवर्ड आर्गुमेंट्स को रखती है।
दोनों पोजिशनल और कीवर्ड-ओनली आर्गुमेंट्स स्वीकार करने के लिए
* और ** को एक साथ उपयोग करें।
def func_anyargs(*args, **kwargs):
print(args) # एक टपल
print(kwargs) # एक डिक्ट
इस फंक्शन के साथ, सभी पोजिशनल आर्गुमेंट्स एक टपल args में रखे जाते हैं, और सभी कीवर्ड आर्गुमेंट्स एक डिक्शनरी kwargs में रखे जाते हैं।