Տարբեր քանակի արգումենտներ

Մենք արդեն օգտագործել ենք ֆունկցիաներ, ինչպես օրինակ print()-ը և zip()-ը, որոնք ընդունում են տարբեր քանակի արգումենտներ։ Բայց ինչպե՞ս կարող ենք ինքներս ստեղծել այնպիսի ֆունկցիա, որը կարողանա աշխատել տարբեր քանակի արգումենտների հետ։
print() օգտագործելիս մենք կանչում ենք այն՝ դրան փոխանցելով տարբեր արգումենտներ, որոնց արժեքները ցանկանում ենք տպել ելքում.
print('Hi')                   # Hi
print('Hi', 'how', 'are', 1)  # Hi how are 1
print(1, 2, 3, 8)             # 1 2 3 8
Եթե Python-ի պաշտոնական կայքում նայենք, թե ինչպես է իրականացված print()-ը, ապա կտեսնենք, որ հենց առաջին արգումենտը ստանում է բոլոր փոխանցված արժեքները։ Նույնը կարելի է տեսնել zip-ի դեպքում.
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
zip(*iterables, strict=False)
Աղբյուրը՝ 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()-ի միջոցով, կարող ենք ցիկլով անցնել դրա էլեմենտների վրայով և այլն։

Առաջադրանք

Իրականացրեք 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)

# This is equivalent to
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