तर्कों की परिवर्तनीय संख्या

हमने पहले से कुछ ऐसे फ़ंक्शन देखे हैं जो 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 फ़ंक्शन के लिए भी लागू होती है:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
zip(*iterables, strict=False)
Source: https://docs.python.org/3/library/functions.html
हम एक एस्टेरिस्क * का उपयोग करके ऐसे फ़ंक्शन परिभाषित कर सकते हैं जो तर्कों की परिवर्तनीय संख्या को स्वीकार करते हैं:
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() लागू करें जो उसे पास किए गए तर्कों की संख्या को वापस करे।
फ़ंक्शन के कॉल के उदाहरण:
def num_args(*args):
    ...

print(num_args(1, 2, 3))  # 3
print(num_args())         # 0
print(num_args('Anna'))   # 1
 
प्रो टिप 😎: एक साधारण सूची को *args में बदलना भी संभव है:
a = [1, 2, 3, 'hello']
print(*a)

# यह इसके समकक्ष है
print(1, 2, 3, 'hello')
अब आप जानते हैं कि सूचियों को आसानी से कैसे प्रिंट किया जाए।
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue