Python-funkció érvek (alapértelmezett, kulcsszó és önkényes)

A Pythonban meghatározhat egy függvényt, amely változó számú argumentumot vesz fel. Ebben a cikkben megtanulja meghatározni az ilyen függvényeket alapértelmezett, kulcsszó és tetszőleges argumentumokkal.

Videó: Python Function Arguments: Pozíció, Kulcsszavak és Alapértelmezés

Érvek

A felhasználó által definiált függvénytémában megismerkedtünk egy függvény definiálásával és meghívásával. Ellenkező esetben a függvényhívás hibát eredményez. Itt egy példa.

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

Kimenet

 Hello Monica, jó reggelt!

Itt a függvénynek greet()két paramétere van.

Mivel ezt a függvényt két argumentummal hívtuk meg, simán fut, és nem kapunk hibát.

Ha más számú argumentummal hívjuk meg, akkor a tolmács hibaüzenetet jelenít meg. Az alábbiakban meghívjuk ezt a függvényt, egy és nem argumentummal együtt a megfelelő hibaüzenetekkel.

 >>> üdvözlet ("Monica") # csak egy argumentum TypeError: greet () hiányzik 1 kötelező pozíció argumentum: 'msg'
 >>> greet () # no argumentumok TypeError: greet () hiányzik 2 kötelező pozíció argumentum: 'name' és 'msg'

Változó funkciójú érvek

Eddig a függvényeknek fix számú argumentuma volt. A Pythonban más módon lehet meghatározni egy függvényt, amely változó számú argumentumot vehet fel.

Az alábbiakban három ilyen típusú formát írunk le.

Python alapértelmezett érvek

A függvény argumentumoknak lehetnek alapértelmezett értékei a Pythonban.

Alapértelmezett értéket adhatunk egy argumentumhoz a hozzárendelési operátor (=) használatával. Itt egy példa.

 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?")

Kimenet

Hello Kate, jó reggelt! Helló, Bruce, hogy csinálod?

Ebben a funkcióban a paraméternek namenincs alapértelmezett értéke, és hívás közben kötelező (kötelező).

Másrészt, a paraméter msgalapértelmezett értéke az "Good morning!". Tehát hívás közben opcionális. Ha megad egy értéket, akkor az felülírja az alapértelmezett értéket.

A függvényben tetszőleges számú argumentumnak lehet alapértelmezett értéke. De ha van egy alapértelmezett argumentumunk, akkor a tőle jobbra eső összes argumentumnak rendelkeznie kell alapértelmezett értékekkel is.

Ez azt jelenti, hogy a nem alapértelmezett argumentumok nem követhetik az alapértelmezett argumentumokat. Például, ha a fenti funkciófejlécet a következőképpen definiáltuk:

 def üdvözlet (msg = "Jó reggelt!", név):

Hibát kapunk:

 SyntaxError: a nem alapértelmezett argumentum az alapértelmezett argumentumot követi

Python Kulcsszó érvek

Amikor meghívunk egy függvényt bizonyos értékekkel, ezeket az értékeket a pozíciójuknak megfelelően rendeljük hozzá az argumentumokhoz.

Például a fenti függvényben greet(), amikor úgy hívtuk greet("Bruce", "How do you do?"), az értéket "Bruce"az argumentum nevéhez rendeljük, és hasonlóan "How do you do?"az msg-hez.

A Python lehetővé teszi a függvények meghívását kulcsszó argumentumokkal. Ha így hívjuk meg a függvényeket, az argumentumok sorrendje (helyzete) megváltoztatható. A fenti függvény hívásai érvényesek és ugyanazt az eredményt hozzák.

 # 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?") 

Mint láthatjuk, a függvényhívás során keverhetjük a helyzeti argumentumokat a kulcsszó argumentumokkal. De nem szabad megfeledkeznünk arról, hogy a kulcsszó argumentumoknak a helyzeti érveket kell követniük.

Ha kulcsszó argumentumok után van egy pozíciós argumentum, hibákhoz vezet. Például a függvényhívás az alábbiak szerint:

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

Hiba lesz:

 SyntaxError: nem kulcsszó arg az arg kulcsszó után

Python önkényes érvek

Előfordul, hogy nem tudjuk előre a függvénybe továbbítandó argumentumok számát. A Python lehetővé teszi számunkra, hogy ezt a fajta helyzetet függvényhívásokon keresztül tetszőleges számú argumentummal kezeljük.

A függvénydefinícióban egy csillagot (*) használunk a paraméter neve előtt az ilyen típusú argumentum jelölésére. Itt egy példa.

 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")

Kimenet

 Helló Monica Helló Luke Helló Steve Helló John

Itt több argumentummal hívtuk meg a függvényt. Ezeket az argumentumokat egy kettőbe csomagolják, mielőtt átadnák őket a függvénynek. A függvényen belül egy forhurkot használunk az összes argumentum visszakereséséhez.

érdekes cikkek...