Argumenty funkcií Pythonu (predvolené, kľúčové slovo a ľubovoľné)

V Pythone môžete definovať funkciu, ktorá prijíma premenlivý počet argumentov. V tomto článku sa naučíte definovať tieto funkcie pomocou predvolených, kľúčových slov a ľubovoľných argumentov.

Video: Argumenty funkcií Pythonu: Pozícia, Kľúčové slová a Predvolené

Argumenty

V téme funkcií definovaných používateľom sme sa dozvedeli o definovaní funkcie a jej volaní. V opačnom prípade bude volanie funkcie mať za následok chybu. Tu je príklad.

 def greet(name, msg): """This function greets to the person with the provided message""" print("Hello", name + ', ' + msg) greet("Monica", "Good morning!")

Výkon

 Ahoj Monika, dobré ráno!

Tu má funkcia greet()dva parametre.

Keďže sme túto funkciu nazvali dvoma argumentmi, beží hladko a nedostane sa nám žiadna chyba.

Ak to nazveme s iným počtom argumentov, tlmočník zobrazí chybové hlásenie. Ďalej je uvedené volanie tejto funkcie s jedným a žiadnymi argumentmi a príslušnými chybovými hláseniami.

 >>> greet ("Monica") # iba jeden argument TypeError: greet () chýba 1 požadovaný pozičný argument: 'msg'
 >>> greet () # žiadne argumenty TypeError: greet () chýbajúce 2 požadované pozičné argumenty: 'name' a 'msg'

Argumenty premennej funkcie

Doteraz mali funkcie pevný počet argumentov. V Pythone existujú aj iné spôsoby, ako definovať funkciu, ktorá dokáže prijať premenlivý počet argumentov.

Ďalej sú opísané tri rôzne formy tohto typu.

Predvolené argumenty pre Python

Argumenty funkcií môžu mať v Pythone predvolené hodnoty.

Môžeme poskytnúť predvolenú hodnotu argumentu pomocou operátora priradenia (=). Tu je príklad.

 def greet(name, msg="Good morning!"): """ This function greets to the person with the provided message. If the message is not provided, it defaults to "Good morning!" """ print("Hello", name + ', ' + msg) greet("Kate") greet("Bruce", "How do you do?")

Výkon

Ahoj Kate, dobré ráno! Ahoj Bruce, ako sa máš?

V tejto funkcii namenemá parameter predvolenú hodnotu a je povinný (povinný) počas hovoru.

Na druhej strane má parameter msgpredvolenú hodnotu "Good morning!". Počas hovoru je teda voliteľný. Ak je poskytnutá hodnota, prepíše predvolenú hodnotu.

Akýkoľvek počet argumentov vo funkcii môže mať predvolenú hodnotu. Ale akonáhle máme predvolený argument, všetky argumenty vpravo musia mať tiež predvolené hodnoty.

To znamená, že hovoria, že iné ako predvolené argumenty nemôžu nasledovať predvolené argumenty. Napríklad, ak by sme vyššie definovali hlavičku funkcie ako:

 def greet (msg = "Dobré ráno!", meno):

Dostali by sme chybu ako:

 SyntaxError: za predvoleným argumentom nasleduje neštandardný argument

Argumenty kľúčových slov v jazyku Python

Keď zavoláme funkciu s niektorými hodnotami, tieto hodnoty sa priradia k argumentom podľa ich polohy.

Napríklad vo vyššie uvedenej funkcii greet(), keď sme ju nazvali ako greet("Bruce", "How do you do?"), bude hodnota "Bruce"priradená k názvu argumentu a podobne "How do you do?"k msg.

Python umožňuje volanie funkcií pomocou argumentov kľúčových slov. Keď takto voláme funkcie, dá sa zmeniť poradie (pozícia) argumentov. Všetky nasledujúce volania vyššie uvedenej funkcie sú platné a vedú k rovnakému výsledku.

 # 2 keyword arguments greet(name = "Bruce",msg = "How do you do?") # 2 keyword arguments (out of order) greet(msg = "How do you do?",name = "Bruce") 1 positional, 1 keyword argument greet("Bruce", msg = "How do you do?") 

Ako vidíme, môžeme počas hovoru funkcie zmiešať pozičné argumenty s argumentmi kľúčového slova. Musíme si však uvedomiť, že argumenty kľúčových slov musia nasledovať pozičné argumenty.

Ak budete mať za argumentmi kľúčových slov pozičný argument, bude to mať za následok chyby. Napríklad volanie funkcie takto:

 greet(name="Bruce","How do you do?")

Povedie k chybe:

 SyntaxError: nekľúčové slovo arg za kľúčovým slovom arg

Ľubovoľné argumenty v jazyku Python

Niekedy nevieme vopred počet argumentov, ktoré sa dostanú do funkcie. Python nám umožňuje zvládnuť tento druh situácie prostredníctvom volaní funkcií s ľubovoľným počtom argumentov.

V definícii funkcie používame na označenie tohto druhu argumentu hviezdičku (*) pred názvom parametra. Tu je príklad.

 def greet(*names): """This function greets all the person in the names tuple.""" # names is a tuple with arguments for name in names: print("Hello", name) greet("Monica", "Luke", "Steve", "John")

Výkon

 Ahoj Monica Ahoj Luke Ahoj Steve Ahoj John

Tu sme funkciu nazvali viacerými argumentmi. Tieto argumenty sa pred odovzdaním do funkcie zabalia do n-tice. Vo vnútri funkcie používame forslučku na získanie všetkých argumentov späť.

Zaujímavé články...