Կարող եք ձեր կոդը փորձարկել այստեղ
Ֆունկցիան կարող է ընդունել պարամետրեր: Դուք կարող եք տվյալներ փոխանցել գործառույթին պարամետրերի միջոցով: Չնչին օրինակ է ֆունկցիան print(), որը, օգտագործելով պարամետր, արժեք է դուրս բերում վահանակ:
Այժմ եկեք սահմանենք և օգտագործենք մեր գործառույթը պարամետրերով.
def say_hello(name):
print(f"Hello, {name}")
say_hello("Tom")
say_hello("Bob")
say_hello("Alice")
say_hello ֆունկցիան ունի անվանման պարամետր, և ֆունկցիան կանչելիս մենք կարող ենք ցանկացած արժեք փոխանցել այս պարամետրին։ Ֆունկցիայի ներսում մենք կարող ենք օգտագործել պարամետրը որպես կանոնավոր փոփոխական, օրինակ՝ տպել այս պարամետրի արժեքը վահանակում՝ օգտագործելով տպման ֆունկցիան: Այսպիսով, արտահայտության մեջ.
say_hello("Tom")
«Tom» տողը կփոխանցվի անվան պարամետրին: Արդյունքում, ծրագիրը գործարկելիս մենք կստանանք հետևյալ վահանակի ելքը.
Hello, Tom Hello, Bob Hello, Alice
Երբ ֆունկցիա է կանչվում, արժեքները փոխանցվում են պարամետրերին՝ ըստ դիրքի: Օրինակ՝ սահմանենք և կանչենք մի քանի պարամետրով ֆունկցիա.
def print_person(name, age):
print(f"Name: {name}")
print(f"Age: {age}")
print_person("Tom", 37)
Այստեղ ֆունկցիան print_person վերցնում է երկու պարամետր՝ անուն և տարիք: Ֆունկցիան կանչելիս.
print_person("Tom", 37)
Առաջին արժեքը՝ «Tom» փոխանցվում է առաջին պարամետրին, այսինքն՝ պարամետրին name: Երկրորդ արժեքը՝ 37, փոխանցվում է երկրորդ պարամետրին՝ տարիքին։ Եվ ֆունկցիայի ներսում պարամետրերի արժեքները տպվում են վահանակում.
Name՝ Tom Age: 37
Կանխադրված արժեքներ
Մենք կարող ենք ֆունկցիայի որոշ պարամետրեր դարձնել ընտրովի՝ ֆունկցիան սահմանելիս դրանց համար լռելյայն արժեքներ նշելով: Օրինակ:
def say_hello(name="Tom"):
print(f"Hello, {name}")
say_hello()
say_hello("Bob") #name = "Bob"
Այստեղ անվանման պարամետրը պարտադիր չէ: Իսկ եթե ֆունկցիան կանչելիս դրա համար արժեք չենք փոխանցում, ապա կիրառվում է լռելյայն արժեքը, այսինքն՝ «Tom» տողը։ Այս ծրագրի վահանակի ելքը.
Hello, Tom Hello, Bob
Եթե ֆունկցիան ունի մի քանի պարամետր, ապա կամընտիր պարամետրերը պետք է լինեն պահանջվողներից հետո: Օրինակ:
def print_person(name, age = 18):
print(f"Name: {name} Age: {age}")
print_person("Bob")
print_person("Tom", 37)
Այստեղ տարիքի պարամետրը կամընտիր է և լռելյայն է 18: Դրան նախորդում է անվանման պահանջվող պարամետրը: Հետևաբար, ֆունկցիա կանչելիս մենք կարող ենք արժեք չփոխանցել age պարամետրին, բայց անհրաժեշտ է արժեք փոխանցել անվան պարամետրին։
Անհրաժեշտության դեպքում մենք կարող ենք բոլոր պարամետրերը կամընտիր դարձնել.
def print_person(name = "Tom", age = 18):
print(f"Name: {name} Age: {age}")
print_person() # Name: Tom Age: 18
print_person("Bob") # Name: Bob Age: 18
print_person("Sam", 37) # Name: Sam Age: 37
Անվանական արժեքների փոխանցում պարամետրերին: Անվանված պարամետրեր
Վերոնշյալ օրինակներում ֆունկցիա կանչելիս արժեքները փոխանցվում են ըստ դիրքի ըստ ֆունկցիայի պարամետրերի: Բայց դուք կարող եք նաև արժեքներ փոխանցել պարամետրերին անունով: Դա անելու համար ֆունկցիա կանչելիս նշվում է պարամետրի անունը և դրան նշանակվում է արժեք.
def print_person(name, age):
print(f"Name: {name} Age: {age}")
print_person(age = 22, name = "Tom")
Այս դեպքում տարիքի և անվան պարամետրերի արժեքները փոխանցվում են անունով: Եվ չնայած այն հանգամանքին, որ ֆունկցիայի սահմանման մեջ առաջին տեղում է անվան պարամետրը, ֆունկցիան կանչելիս մենք կարող ենք գրել print_person(age = 22, name = "Tom")և այդպիսով փոխանցել 22 թիվը տարիքային պարամետրին, իսկ «Tom» տողը անվան պարամետրին։
* նշանը թույլ է տալիս սահմանել, թե որ պարամետրերն են անվանակոչվելու, այսինքն՝ պարամետրեր, որոնց արժեքները կարող են փոխանցվել միայն անունով: Բոլոր պարամետրերը, որոնք տեղակայված են * նշանի աջ կողմում, արժեքներ են ստանում միայն անունով.
def print_person(name, *, age, company):
print(f"Name: {name} Age: {age} Company: {company}")
print_person("Bob", age = 41, company ="Microsoft") # Name: Bob Age: 41 company: Microsoft
Այս դեպքում անվանվում են տարիքային և ընկերության պարամետրերը:
Դուք կարող եք անվանել բոլոր պարամետրերը՝ պարամետրերի ցանկի դիմաց տեղադրելով * նշանը.
def print_person(*, name, age, company):
print(f"Name: {name} Age: {age} Company: {company}")
Եթե ընդհակառակը, դուք պետք է սահմանեք պարամետրեր, որոնց արժեքները կարող են փոխանցվել միայն դիրքով, այսինքն՝ դիրքային պարամետրերով, ապա կարող եք օգտագործել / նշանը . բոլոր պարամետրերը, որոնք առաջ են գալիս / նշանից , դիրքային են և կարող են արժեքներ ստանալ: միայն ըստ պաշտոնի
def print_person(name, /, age, company="Microsoft"):
print(f"Name: {name} Age: {age} Company: {company}")
print_person("Tom", company="JetBrains", age = 24) # Name: Tom Age: 24 company: JetBrains
print_person("Bob", 41) # Name: Bob Age: 41 company: Microsoft
Այս դեպքում անվանման պարամետրը դիրքային է:
Մեկ ֆունկցիայի համար կարող եք սահմանել ինչպես դիրքային, այնպես էլ անվանական պարամետրեր:
def print_person(name, /, age = 18, *, company):
print(f"Name: {name} Age: {age} Company: {company}")
print_person("Sam", company ="Google") # Name: Sam Age: 18 company: Google
print_person("Tom", 37, company ="JetBrains") # Name: Tom Age: 37 company: JetBrains
print_person("Bob", company ="Microsoft", age = 42) # Name: Bob Age: 42 company: Microsoft
Այս դեպքում պարամետրը name գտնվում է / նշանի ձախ կողմում, հետևաբար այն դիրքային է և պարտադիր. այն կարող է փոխանցվել միայն արժեք ըստ դիրքի:
Պարամետրը company կոչվում է, քանի որ այն գտնվում է * նշանի աջ կողմում: Պարամետրը age կարող է արժեք ստանալ ըստ անվանման և դիրքի:
Պարամետրերի չճշտված քանակ
Աստղանիշի նիշը կարող է օգտագործվել պարամետր սահմանելու համար, որի միջոցով կարելի է փոխանցել անորոշ թվով արժեքներ: Սա կարող է օգտակար լինել, երբ մենք ցանկանում ենք, որ ֆունկցիան ստանա մի քանի արժեք, բայց մենք հստակ չգիտենք, թե քանի արժեք: Օրինակ՝ սահմանենք թվերի գումարը հաշվելու ֆունկցիա.
def sum(*numbers):
result = 0
for n in numbers:
result += n
print(f"sum = {result}")
sum(1, 2, 3, 4, 5) # sum = 15
sum(3, 4, 5, 6) # sum = 18
Այս դեպքում գումարի ֆունկցիան վերցնում է մեկ պարամետր - *numbers, բայց պարամետրի անվան առաջ աստղանիշը ցույց է տալիս, որ իրականում այս պարամետրի փոխարեն մենք կարող ենք փոխանցել անորոշ թվով արժեքներ կամ արժեքների մի շարք: Ինքն գործառույթում, օգտագործելով for loop-ը, կարող եք անցնել այս բազմության միջով, այս հավաքածուից յուրաքանչյուր արժեք ստանալ փոփոխական nև կատարել որոշ գործողություններ դրա հետ: Օրինակ, այս դեպքում հաշվարկվում է փոխանցված թվերի գումարը։
Մեկնաբանություն գրելու համար խնդրում ենք մուտք լինել