Ebben a cikkben példákkal ismerkedhetünk meg a Python * args-ról és a ** kwarg-okról, azok felhasználásáról és funkcióiról.
A programozás során meghatározunk egy funkciót egy újrafelhasználható kód elkészítéséhez, amely hasonló műveletet hajt végre. A művelet végrehajtásához meghívunk egy függvényt a meghatározott értékkel, ezt az értéket függvény argumentumnak hívjuk a Pythonban.
Javasoljuk, hogy olvassa el a Python Function és a Python Function Argumentumokat.
Tegyük fel, hogy meghatározunk egy függvényt 3 szám hozzáadásához.
1. példa: Funkció 3 szám hozzáadásához
def adder(x,y,z): print("sum:",x+y+z) adder(10,12,13)
A fenti program futtatásakor a kimenet az lesz
összeg: 35
A fenti programban adder()
három x, y és z argumentummal rendelkezünk. Ha három értéket adunk meg a adder()
függvény hívása közben , akkor a 3 szám összegét kapjuk kimenetként.
Megnézzük, mi történik, ha több mint 3 argumentumot adunk át a adder()
függvényben.
def adder(x,y,z): print("sum:",x+y+z) adder(5,10,15,20,25)
A fenti program futtatásakor a kimenet az lesz
TypeError: az addder () 3 pozíció argumentumot vesz fel, de 5 kapott
A fenti programban 5 argumentumot adtunk át a adder()
függvénynek 3 argumentum helyett, amelyek miatt kaptunk TypeError
.
Az * args és a ** kwargs bemutatása a Pythonban
A Pythonban változó számú argumentumot adhatunk át egy függvénynek speciális szimbólumok segítségével. Két speciális szimbólum létezik:
- * args (nem kulcsszó-érvek)
- ** kwargs (Kulcsszó-érvek)
Az * args és a ** kwargs argumentumot használjuk, ha nem vagyunk biztosak a függvényekben adandó argumentumok számában.
Python * érvel
A fenti példához hasonlóan nem vagyunk biztosak abban, hogy hány argumentum adható át egy függvénynek. A Python rendelkezik * argszal, amelyek lehetővé teszik, hogy a változó számú nem kulcsszó argumentum működjön.
A függvényben egy csillagot kell használnunk *
a paraméter neve előtt, hogy átadjuk a változó hosszúságú argumentumokat. Az argumentumokat duplaként adjuk át, és ezek az átadott argumentumok a függvény belsejében dupláznak, ugyanazzal a névvel, mint a csillagot kizáró paraméter *
.
2. példa: A * args használatával átadhatjuk a változó hosszúságú argumentumokat a függvénynek
def adder(*num): sum = 0 for n in num: sum = sum + n print("Sum:",sum) adder(3,5) adder(4,5,6,7) adder(1,2,3,5,6)
A fenti program futtatásakor a kimenet az lesz
Összeg: 8 Összeg: 22 Összeg: 17
A fenti programban a * num paramétert használtuk, amely lehetővé teszi számunkra, hogy a változó hosszúságú argumentumlistát átadjuk a adder()
függvénynek. A függvényen belül van egy hurok, amely hozzáadja az átadott argumentumot és kinyomtatja az eredményt. 3 különböző változó hosszúságú sorrendet adtunk át argumentumként a függvénynek.
Python ** kwargs
A Python a változó hosszúságú, nem kulcsszó argumentumot átadja az * args használatával való működésnek, de ezt nem használhatjuk kulcsszó argumentum átadására. Erre a problémára a Python kapott egy ** kwargs nevű megoldást, amely lehetővé teszi számunkra, hogy a kulcsszó argumentumainak változó hosszúságát átadjuk a függvénynek.
A függvényben **
a paraméter neve előtt a kettős csillagot használjuk az ilyen típusú argumentum jelölésére. Az argumentumok szótárként kerülnek továbbításra, és ezek az argumentumok egy szótár belső függvényt hoznak létre, amelynek neve megegyezik a kettős csillagot kizáró paraméterrel **
.
3. példa: A ** kwargs használatával a változó kulcsszó argumentumokat átadhatja a függvénynek
def intro(**data): print("Data type of argument:",type(data)) for key, value in data.items(): print("() is ()".format(key,value)) intro(Firstname="Sita", Lastname="Sharma", Age=22, Phone=1234567890) intro(Firstname="John", Lastname="Wood", Email="[email protected]", Country="Wakanda", Age=25, Phone=9876543210)
A fenti program futtatásakor a kimenet az lesz
Az argumentum adattípusa: Keresztnév Sita Vezetéknév Sharma Életkor 22 Telefon: 1234567890 Az argumentum adattípusa: Keresztnév John Vezetéknév Wood E-mail: [email protected] Ország: Wakanda Kor: 25 Telefonszám: 9876543210
A fenti programban van egy függvény intro()
, amelynek paramétere ** adat. Két változó argumentumhosszú szótárat adtunk át a intro()
függvénynek. Van egy hurok belső intro()
funkciója, amely az átadott szótár adatain dolgozik és kinyomtatja a szótár értékét.
Dolgok, amikre emlékezni kell:
- Az * args és a * kwargs speciális kulcsszó, amely lehetővé teszi a függvény számára, hogy változó hosszúságú argumentumot vegyen fel.
- * Az args változó számú kulcsszót nem tartalmazó argumentumlistát ad át, és melyik műveletet lehet végrehajtani.
- ** A kwargs változó számú kulcsszó argumentum szótárt ad át annak működéséhez, amelyen egy szótár működtethető.
- Az * args és a ** kwargs rugalmassá teszik a funkciót.