Python * args és ** kwargs (példákkal)

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:

  1. * args (nem kulcsszó-érvek)
  2. ** 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.

érdekes cikkek...