Ֆունկցիաներ
Մինչ այժմ մենք գրում ենք մեր ամբողջ կոդը app.py-ում, բայց քանի որ մեր ծրագրերը մեծանում են, մեզ անհրաժեշտ է ավելի լավ միջոց՝ մեր կոդը կազմակերպելու համար: Մենք պետք է բաժանենք մեր կոդը ավելի փոքր, ավելի կառավարելի և ավելի պահպանվող կտորների, որոնք մենք անվանում ենք գործառույթներ: Ֆունկցիան կոնտեյներ է կոդի մի քանի տողերի համար, որոնք կատարում են կոնկրետ առաջադրանք:
Օրինակ, դուք արդեն իմացել եք Python-ում ներկառուցված մի քանի ֆունկցիաների մասին print()
և input()
. Յուրաքանչյուր գործառույթ ունի նպատակ և գիտի, թե ինչպես կատարել կոնկրետ առաջադրանք: Այսպիսով, երբ մենք կառուցում ենք մեծ բարդ ծրագրեր, մենք պետք է բաժանենք մեր կոդը ավելի փոքր բազմակի օգտագործման կտորների, այսինքն՝ ֆունկցիաների:
Եկեք հասկանանք այս հայեցակարգը՝ ստեղծելով ողջույնի ուղերձ տպելու ծրագիր:
print('Hi there!')
print('Welcome aboard!')
Այստեղ մենք ունենք մի պարզ ծրագիր՝ ընդամենը երկու տող կոդով: Հիմա, ենթադրենք, դրանք մեզ պետք կգան այլ ծրագրերում, որպեսզի դրանք տեղադրենք մի ֆունկցիայի մեջ, որը մենք կարող ենք նորից օգտագործել:
Թույլ տվեք ներկայացնել վերապահված հիմնաբառ def
Python-ում, որը կարճ է define-ի համար և օգտագործվում է ֆունկցիա սահմանելու համար:
def greet_user():
print('Hi there!')
print('Welcome aboard!')
Այժմ կոդի այս բլոկը կսահմանի ֆունկցիա «greet_user
” դրանից հետո ծածկագրերի տողերով: Երբ այս ֆունկցիան կանչվի, այս երկու տողերը կկատարվեն: Եկեք օգտագործենք սա.
print('start')
greet_user()
print('finish')
Ծրագիրը կատարվում է հաջորդաբար, ինչը նշանակում է, որ նախքան այն ծրագրում կանչելը, դուք պետք է սահմանեք գործառույթ:
Պարամետրեր
Սահմանված գործառույթները մի փոքր այլ կերպ են աշխատում, քան Python-ի ներկառուցված գործառույթները: Օրինակ, դեպքում print()
գործառույթ, այն պահանջում է որոշակի տեղեկատվություն, որը մենք ցանկանում ենք տպել, բայց մեր ողջույնի գործառույթը որևէ տեղեկատվություն չի վերցնում: Ավելի լավ չի՞ լինի, եթե կարողանայիր այստեղ փոխանցել օգտատիրոջ անունը, իսկ հետո, «բարև քեզ» ասելու փոխարեն, կարողանայիր տպել օգտատիրոջ անունը:
Դուք կարող եք դա անել՝ ավելացնելով պարամետրերը սահմանված ֆունկցիայի փակագծերի ներսում։ Թույլ տվեք ցույց տալ ձեզ:
def greet_user(name):
print('Hi there!')
print('Welcome aboard!')
Այժմ «name
” փակագծերի ներսում կգործի որպես լոկալ փոփոխական, և մենք կարող ենք փոխանցել օգտվողի անունը այն զանգահարելիս:
greet_user('Shahbaz')
Այժմ անվան պարամետրը դրված է «Shahbaz
»: Եկեք փոխենք ծրագիրը՝ դրանից օգտվելու համար:
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
print('finish')
Կարևոր է նշել, որ առաջին տողում «անունը» կոչվում է Պարամետր, մինչդեռ տրված անունը, այսինքն՝ Շահբազը կոչվում է արգումենտ:
Եկեք առաջ գնանք և գործարկենք այս ծրագիրը:
Այսպիսով, այս պարամետրերով մենք կարող ենք տեղեկատվություն ստանալ մեր գործառույթներում:
Հիմա եկեք մի հետաքրքիր բան անենք։ Ենթադրենք, դուք ցանկանում եք մեկ այլ անուն ավելացնել ողջույնի հաղորդագրությանը: Դա պարզ է.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
greet_user('Aayush')
print('finish')
Այժմ նշենք, որ երբ ֆունկցիան ունի պարամետր, մենք պարտավոր ենք այդ պարամետրի համար արժեք փոխանցել: Եթե դուք անունը հանեք ֆունկցիայից և գործարկեք ծրագիրը, մենք սխալ կստանանք։ Կարող եք նաև օգտագործել մի քանի պարամետր մեկ ֆունկցիայում՝ բաժանված ստորակետով:
Օրինակ, greet_user(first_name, last_name):
. Փաստարկները նույնպես կձևաչափվեն նույն կերպ:
Հիմնաբառի փաստարկներ
Մինչ այժմ մենք սովորել ենք, որ երբ մենք պարամետրեր ենք սահմանում մեր գործառույթների համար, մենք միշտ պետք է արժեքներ տրամադրենք, հակառակ դեպքում մենք սխալ կստանանք: Վերջին հաղորդման մեջ փաստարկները 'Shahbaz'
և 'Bhatti'
կոչվում են դիրքային փաստարկներ՝ նկատի ունենալով նրանց դիրքի կամ կարգի հարցերը ծրագրում:
Python-ում մենք ունենք մեկ այլ տեսակի արգումենտ, որը կոչվում է հիմնաբառի արգումենտներ, որոնց համար դիրքը նշանակություն չունի: Թույլ տվեք ցույց տալ, թե ինչպես են նրանք աշխատում:
Նայեք վերջին ծրագրին. Մենք կարող ենք այն փոփոխել այսպես.
def greet_user(first_name, last_name):
print(f'Hi {first_name} {last_name}')
print('Welcome aboard!')
print('start')
greet_user(first_name='Shahbaz', last_name='Bhatti')
print('finish')
Այժմ first_name
և last_name
հիմնաբառի պարամետրերն են: Դուք կարող եք փոխել նրանց տեղերը, և արդյունքը կլինի նույնը:
Հիմա դա չի նշանակում, որ մենք միշտ պետք է օգտագործենք հիմնաբառերի փաստարկներ: Ժամանակի մեծ մասը մենք օգտագործում ենք դիրքային արգումենտներ, բայց որոշակի իրավիճակներում այս հիմնաբառերի արգումենտներն օգնում են մեզ բարելավել մեր կոդի ընթեռնելիությունը:
Կա ևս մեկ բան, որ դուք պետք է իմանաք հիմնաբառերի փաստարկների մասին: Հիմնաբառի փաստարկները միշտ պետք է լինեն դիրքային փաստարկներից հետո:
Վերադարձի հայտարարություն
Մինչ այժմ մենք սովորել ենք, թե ինչպես ստեղծել գործառույթներ և ուղարկել նրանց տեղեկատվություն՝ օգտագործելով դրանց պարամետրերը: Այժմ եկեք սովորենք, թե ինչպես ստեղծել գործառույթներ, որոնք վերադարձնում են արժեքներ: Սա հատկապես օգտակար է, եթե դուք ինչ-որ հաշվարկներ եք անում և ցանկանում եք արդյունքը վերադարձնել նրան, ով օգտագործում է ձեր գործառույթը: Թույլ տվեք ցույց տալ ձեզ.
Սահմանենք մի ֆունկցիա, որը կհաշվի թվի քառակուսին։
def square(number):
return number*number
Մենք օգտագործել ենք վերադարձի հայտարարությունը ֆունկցիայից դուրս այս թիվը վերադարձնելու համար: Այժմ, եթե մենք կանչենք այս ֆունկցիան, այն վերադարձնում է արժեք, ինչպես որ input()
ֆունկցիան։ Եկեք տպենք այն տերմինալի վրա:
Դուք կարող եք պնդել, որ նույն արդյունքը կարելի է ստանալ առանց վերադարձի հայտարարություն օգտագործելու: Եկեք ստուգենք այն:
Մենք տեսնում ենք երկու բան՝ թիվ 9, և ոչ մեկը։ Ի՞նչ է կատարվում այստեղ։
Երբ Python թարգմանիչը կատարում է այս կոդը, նախ այն կկանչի քառակուսի ֆունկցիան և կառավարումը տեղափոխվում է ֆունկցիա: Այստեղ մենք հաշվարկում ենք տվյալ թվի քառակուսին և այն տպում տերմինալի վրա։
Այժմ, լռելյայն, բոլոր գործառույթները վերադարձնում են ոչ մի արժեքը: Այսպիսով, եթե մենք այստեղ չունենք վերադարձի հայտարարություն, լռելյայնորեն Python-ը չի վերադարձնում որևէ մեկը: Ոչ մեկը օբյեկտ է, որը ներկայացնում է արժեքի բացակայությունը: C, C++, Java-ում և Javascript-ում դա ոչինչ կամ զրոյական է:
Փաթաթել Up!
Հուսով եմ, որ դուք հասկացել եք գործառույթների կարևորությունը:
Դրանք Python-ի ուսուցման կարևոր ասպեկտ են, եթե պլանավորում եք գրել մեծ և բարդ ծրագրեր ձեր կոդավորման կարիերայի ընթացքում:
Թողնել գրառում