Մենք արդեն օգտագործել ենք ֆունկցիաներ, որոնք ընդունում են տարբեր քանակի արգումենտներ 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()-ը հենց Python-ի օֆիցիալ կայքից, ապա կտեսնենք, որ հենց առաջին արգումենտը ստանում է բոլոր փոխանցված արժեքները։ Նույնը կարելի է տեսնել zip-ի դեպքում.
Մենք կարող ենք ունենալ մեր սեփական ֆունկցիաները, որոնք ընդունում են տարբեր քանակի արգումենտներ * նշանի միջոցով.
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() ֆունկցիան, որը կվերադարձնի իրեն փոխանցված արգումենտների քանակը։