हमने पहले से कुछ ऐसे फ़ंक्शन देखे हैं जो print() या zip() की तरह परिवर्तनीय संख्या के तर्कों को स्वीकार करते हैं। फिर भी, हमने खुद कोई ऐसा फ़ंक्शन नहीं बनाया है। ऐसा फ़ंक्शन कैसे लिखा जाए जो परिवर्तनीय संख्या के तर्कों को संभाल सके?
जब हम तत्वों को प्रिंट करते हैं, हम print() फ़ंक्शन को जितने भी तर्कों के साथ चाहें कॉल कर सकते हैं, और यह सभी को प्रिंट करेगा:
print('Hi') # Hi
print('Hi', 'how', 'are', 1) # Hi how are 1
print(1, 2, 3, 8) # 1 2 3 8
अगर हम आधिकारिक पायथन दस्तावेज़ में print() फ़ंक्शन के सिग्नेचर को देखें, तो पहला तर्क वास्तव में उसे पास किए गए सभी गैर-किवर्ड तर्कों की पूरी सूची को कैप्चर करता है। यही बात zip फ़ंक्शन के लिए भी लागू होती है:
हम एक एस्टेरिस्क * का उपयोग करके ऐसे फ़ंक्शन परिभाषित कर सकते हैं जो तर्कों की परिवर्तनीय संख्या को स्वीकार करते हैं:
def income(*purchases):
total = 0
for purchase in purchases:
total += purchase
return total
print(income(1, 2, 3, 4, 10)) # 20
यहां हम purchases को संख्याओं की एक सूची की तरह मान सकते हैं। हम len() के साथ इसकी लंबाई प्राप्त कर सकते हैं, for लूप के साथ इसके तत्वों पर इटररेट कर सकते हैं, आदि।
चुनौती
ऐसा फ़ंक्शन num_args() लागू करें जो उसे पास किए गए तर्कों की संख्या को वापस करे।