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