Python-ում կոդ գրելիս կարելի է կիրառել դիրքային արգումենտներ, keyword (բանալի) արգումենտներ կամ դրանց համադրությունը ֆունկցիաներ սահմանելու և կանչելու ժամանակ: Այս արգումենտների օգնությամբ կոդը կարող եք դարձնել ավելի հակիրճ և ընթեռնելի:
Դիրքային արգումենտներ
Դիրքային արգումենտներն այն արգումենտներն են, որոնք պետք է փոխանցվեն ֆունկցիային որոշակի հերթականությամբ: Ահա մեկ օրինակ, որտեղ մենք կառուցում ենք պարզ ֆունկցիա՝ ամբողջական անուն ստեղծելու համար.
def full_name(first_name, last_name):
return f'{first_name} {last_name}' # Combine the first and last name
print(full_name('Anna', 'Brown')) # Prints 'Anna Brown'
Վերոնշյալ օրինակում Anna-ն առաջին արգումենտն է, իսկ Brown-ը՝ երկրորդ արգումենտը։ Եթե փոխենք արգումենտների հերթականությունը, ապա կստանանք տարբեր արդյունքներ.
print(full_name('Brown', 'Anna')) # Prints 'Brown Anna'
Keyword արգումենտներ
Ի տարբերություն դիրքային արգումենտների՝ keyword արգումենտները մեզ հնարավորություն են տալիս՝ նշելու փաստարկի անունը, երբ այն փոխանցում ենք ֆունկցիային՝ այդպիսով մեր կոդը դարձնելով ավելի ընթեռնելի: Բացի այդ, մենք կարող ենք դրանք օգտագործել արգումենտների համար սկզբնադիր արժեքներ (default values) սահմանելու համար:
def full_name(first_name, last_name):
return f'{first_name} {last_name}'
print(full_name(last_name='Brown', first_name='Anna')) # Prints 'Anna Brown'
print(full_name(first_name='Anna', last_name='Brown')) # Prints 'Anna Brown'
Այս դեպքում ստանում ենք նույն արդյունքը, ինչ առաջին օրինակում՝ անկախ փաստարկների հերթականությունից:
💡
Կարևոր է նշել, որ ֆունկցիա կանչելիս keyword արգումենտները միշտ պետք է դիրքային արգումենտներից հետո լինեն:
Եթե ֆունկցիայի կանչի ժամանակ keyword արգումենտներն օգտագործեք դիրքային արգումենտներից առաջ, Python-ը syntax-ի (շարահյուսության) սխալ ցույց կտա: Այս կանոնը Python-ին օգնում է տարբերակել նշված երկու արգումենտները: Եթե դիրքային արգումենտները դնեք keyword արգումենտներից հետո, Python-ը կշփոթվի, քանի որ ծրագիրն ակնկալում է, որ բոլոր դիրքային արգումենտներն արդեն սահմանված են: Ահա ֆունկցիան սխալ կանչելու օրինակ, որը կարող է առաջացնել SyntaxError.
Այս կանոնը երաշխավորում է, որ ֆունկցիաների կանչերը հստակ են, կոդն ավելի հասկանալի է, իսկ սխալների հավանականությունը՝ քիչ։
Դիրքային և keyword արգումենտների համադրում
Դիտարկենք այս ֆունկցիան, որը ելքում տալիս է ամբողջական անունը, ներառյալ՝ միջին անունը.
# Default values for middle and last names (empty strings)
def full_name(first, middle='', last=''):
return first + ' ' + middle + ' ' + last
print(full_name('Anna', last='Brown')) # 'Anna Brown'
print(full_name('Anna', middle='Louise', last='Brown')) # 'Anna Louise Brown'
print(full_name('Anna', 'Louise', last='Brown')) # 'Anna Louise Brown'
print(full_name('Anna', 'Louise', 'Brown')) # 'Anna Louise Brown'
print(full_name(first='Anna', 'Louise', last='Brown')) # SyntaxError
Այս օրինակում անունը հանդես է գալիս որպես դիրքային արգումենտ, մինչդեռ ազգանունը keyword արգումենտ է: Միջին անունը տրված չէ, ուստի այն օգտագործվում է իր սկզբնադիր (default) արժեքով (դատարկ):
Մեկ այլ կարևոր կանոնն այն է, որ երբ սկսում եք կիրառել keyword արգումենտներ, ապա բոլոր հաջորդ արգումենտները պետք է լինեն keyword արգումենտներ: Օրինակ, print(full_name(first='Anna', 'Louise', last='Brown')) կհանգեցնի սխալի, քանի որ keyword արգումենտին (first='Anna') հետևում է դիրքային արգումենտը ('Louise')։
Ի վերջո, եկեք դիտարկենք իրական կյանքի ավելի բարդ օրինակ. ֆունկցիա, որը հաշվարկում է կատարված գնումի ընդհանուր արժեքը, և ունի հարկի և զեղչի ոչ պարտադիր պարամետրեր:
# Default values for tax and discount are set to 0
def calculate_total_cost(price, tax=0.0, discount=0.0):
return price + price * tax - discount
print(calculate_total_cost(100, tax=0.05)) # 105.0
print(calculate_total_cost(100, discount=10)) # 90.0
print(calculate_total_cost(100, tax=0.05, discount=10)) # 95.0
Այս օրինակում գինը պարտադիր դիրքային արգումենտ է, մինչդեռ հարկը և զեղչը ոչ պարտադիր keyword արգումենտներ են: Եթե տվյալներ չտրամադրվեն, վերջիններս կվերցնեն իրենց սկզբնադիր (default) արժեքները՝ 0: