Függvények¶
Függvénydefiníció¶
Pythonban is van lehetőségünk saját függvényeket definiálnunk, majd ezeket később használnunk, meghívnunk.
A függvénydefiníció szintaxisa a következő (a szögletes zárójelek közötti részek elhagyhatók):
1 2 3 |
|
Itt is használjuk a Python blokkszintaxist, és a függvény törzsét beljebb indentáljuk.
A függvényeink vissza is térhetnek valamilyen értékkel. Ezt a visszatérési értéket a return
kulcsszó után adhatjuk meg.
Függvényhívás¶
A függvények meghívásakor a szokásos szintaxist használjuk:
1 |
|
Ahogy azt már más nyelvekben megszokhattuk, a függvényhívás során átadjuk a függvénynek a bemeneti paramétereket (feltéve ha a kérdéses függvény vár paramétert).
Default paraméterek¶
Javában lehetőségünk volt több ugyanolyan nevű függvényt definiálni, feltéve ha eltérő volt azok paraméterezése. A függvényhívás során is a paraméterezés döntötte el, hogy az azonos nevű függvények közül melyik került meghívásra. Ezt neveztük function overload-nak.
A Python nem támogatja a function overload-ot (még eltérő paraméterezés esetén sem). Azonos nevű függvények esetén a kódban legkésőbb definiált függvény lesz hívható.
1 2 3 4 5 6 7 8 |
|
Kimenet
Hello Béla!
Mivel a fenti kódban két hello
névre hallgató függvényünk is van, ezért ezek közül a legutoljára definiált, 1 paramétert váró hello(nev)
függvény lesz hívható. Ha a korábban definiált, 0 paraméteres hello()
függvényt próbáljuk meghívni, hibát kapunk.
A gyakorlatban viszont sokszor felmerül az igény arra, hogy egy függvényt akár eltérő paraméterszámmal is meg tudjunk hívni. Szerencsére a Python biztosít erre egy megoldást, mégpedig a default függvényparamétereket.
A default paraméterek lényege, hogy a függvény bizonyos paramétereinek alapértelmezett értéket adunk a függvénydefiníció során. Ha a függvényhíváskor nem adjuk meg az adott paraméter értékét, akkor az az alapértelmezett értéket veszi fel.
1 2 3 4 5 |
|
Kimenet
Hello Senki! Hello Béla!
A fenti kódban először paraméter nélkül hívjuk meg a hello
függvényt. Mivel a paraméterváltozónknak nem adtunk át értékét, ezért az az alapértelmezett "Senki"
szöveget fogja felvenni. A második függvényhívásnál már megadtuk a paraméter értékét ("Béla"
), ebben az esetben természetesen ezt fogjuk használni a függvényen belül (nem a default értéket).
A default paraméterek kapcsán van egy fontos szabály, amit be kell tartanunk: ha nem minden függvényparaméternek adunk alapértelmezett értéket, akkor mindig az utolsó néhány paraméternek kell default értéket adnunk (azaz a default paraméterek mindig a paraméterlista jobb oldalán szerepelnek).
1 2 3 4 5 6 |
|
Kimenet
5 7 10
Nevesített paraméterátadás¶
Default paraméterek használata esetén lehetőségünk van nevesített paraméterátadásra is a függvényhíváskor. Ekkor az elhagyható paraméterek közül expliciten megmondjuk, hogy melyiknek az értékét akarjuk megadni (név=érték
formában).
Ez alapvetően akkor lehet hasznos, ha nem olyan sorrendben szeretnénk megadni a paramétereket, mint ahogy azok a függvény paraméterlistájában szerepelnek, vagy esetleg valahány paraméter értékének megadását ki szeretnénk hagyni a függvényhíváskor.
1 2 3 4 5 6 7 |
|
Kimenet
Károly szakja: proginfó
A fenti példában a függvényhíváskor értéket adtunk az egyetlen kötelező paraméternek (felhasznalonev
), majd nevesített paraméterátadással a legutolsó (szak
) paraméternek az értékét állítottuk be. A középső (jelszo
) paraméternek nem adtunk értéket, így az az alapértelmezett None
értéket veszi fel.
A None
érték¶
A fenti példában szereplő None
egy speciális beépített kulcsszó Pythonban. Ez az "üres érték", amit más nyelvekben gyakran null
-nak neveznek.