Vissza a bloghoz

A *args és **kwargs paraméterek használata a kódban: Python 3 útmutató

A *args és **kwargs paraméterek használata a kódban: Python 3 útmutató

Bevezetés

Python az egyik legnépszerűbb programozási nyelv világszerte. A Pythonban a paraméterek a függvénydefiníciók részét képezik. Lehetővé teszik, hogy meghatározott argumentumokat adj meg egy függvényhez. Az argumentumot a függvény képes fogadni és alkalmazni.

A kódolás idején azonban nem tudhatod, hogy pontosan milyen használati esetek fognak megvalósulni a kódoddal. Ezért a jövőbeli programozók és a programod felhasználói érdekében célszerű változó számú argumentumot átadni egy függvénynek. Ehhez speciális paramétereket kell használnod. Ezek a következők: *args és **kwargs. Ebben az útmutatóban mindent megtanulunk a *args és **kwargs paraméterekről Pythonban. Azt is megtanuljuk, hogyan rendezzük az argumentumokat, és hogyan alkalmazzuk őket függvényhívásokban.

Előfeltételek

Ahhoz, hogy követni tudd az útmutató lépéseit, elő kell készítened néhány dolgot. Először is, rendelkezned kell egy szerverre telepített Python 3-mal és egy működő programozási környezettel. Szükséged van továbbá az adott operációs rendszeredhez tartozó program telepítésére is (Ubuntu, CentOS, Debian stb.).

Mi az az *args és hogyan működik?

Kezdjük azzal, hogy megértjük, hogyan működik az *args paraméter. A paraméter egycsillagos verziója arra szolgál, hogy kulcsszó nélküli, változó hosszúságú argumentumlistákat küldjünk a függvényeknek. Tartsd szem előtt, hogy a csillag a legfontosabb elem ebben a paraméterben.

A jobb megértés érdekében vegyünk egy példát. Az alábbi egy tipikus függvény, amelyet a kódodban találhatsz, két argumentumot használva:

Mint látható, a fenti függvényben az argumentumaink a következők: x és y. A függvény hívásakor az x és y értékeknek megfelelő számokat fogod használni. Tegyük fel, hogy az 5 és 4 egészeket adjuk át az x és y változóknak rendre:

Most már futtathatjuk a kódot:

A kapott kimenet a következő lesz:

A kimenet azt mutatja, hogy az 5 és 4 egészek összeszorzásra kerültek. Ez azt jelenti, hogy a multiply(x, y) függvény működött.

Most tegyük fel, hogy végül három számot szeretnénk megszorozni kettő helyett. Sajnos, ha egy extra számot adunk a fenti függvényhez, az ilyen hibát fog eredményezni:

Ezért, ha van elképzelésed arról, hogy később esetleg további argumentumokat kell hozzáadnod, akkor a kényelem érdekében alkalmazd az *args paramétert. Így használhatod:

Egyszerűen lecseréltük az x és y függvényparamétereket az *args paraméterrel. Ennek a kódnak a futtatása megadja a szorzatot minden egyes függvényhívásra, így:

Így az *args használata ideális, ha változó hosszúságú argumentumlistákat szeretnél küldeni a függvényednek. Képességének köszönhetően tetszőleges számú argumentumot adhatsz át a függvényhívásoknak. Ez a paraméter lehetővé teszi, hogy rugalmasabb kódot építs, amely nagy mennyiségű változó, kulcsszó nélküli argumentumot képes fogadni a függvényben.

Mi az a **kwargs és hogyan működik?

Következőként a paraméterek kétcsillagos verziója következik, ami a **kwargs. Az előző formával ellentétben ez a paraméter lehetővé teszi kulcsszavas, változó hosszúságú argumentumszótárak átadását a függvénynek. Hasonlóan az *args, a dupla csillag a paraméter legfontosabb eleme.

Ahogy az előző részben is tettük, tetszőleges számú argumentumot adhat hozzá. A különbség az, hogy kulcsszavakat kell hozzárendelnie. A jobb megértés érdekében vegye figyelembe a következő példát. Itt azzal kezdjük, hogy kiíratjuk a **kwargs argumentumokat, amelyeket át akarunk adni a függvénynek:

Most pedig hívjuk meg a függvényt. Mint látható, kulcsszavas argumentumokat adtunk hozzá:

A program futtatása ezen a ponton ezt a kimenetet fogja mutatni:

Azonban fennáll a lehetősége annak, hogy a szótár adattípusa rendezetlen. Ez nagymértékben függ a használt Python 3 verziótól. Például a Python 3.6 utáni verziók sorrendben adják vissza a kulcs-érték párokat. Az ezt megelőző verziók véletlenszerű sorrendben jelenítik meg a kimenetet. Az Ön által létrehozott szótár neve kwargs lesz. Vegye figyelembe, hogy ezt ugyanúgy használhatja és módosíthatja, mint bármely más szótárat a rendszerben. Lássuk, hogyan tudja a **kwargs paramétert még jobban kihasználni és alkalmazni.

A következő példában megpróbálunk létrehozni egy új függvényt, amely nevek szótárát fogadja. A mintaszótárunk két nevet fog tartalmazni:

A program futtatása ezt a kimenetet fogja eredményezni:

Az előző példához hasonlóan a szótárak itt is tűnhetnek rendezetlennek. Emiatt a Casey és Sammy nevek sorrendje bizonyos esetekben felcserélődhet.

Ezután további argumentumokat adunk át a függvénynek. Ez be fogja bizonyítani, hogy a **kwargs paramétert tetszőleges számú argumentum fogadására is képessé teheti:

A program futtatása ezt a kimenetet fogja mutatni:

Ez a kimenet is lehet rendezetlen. Ettől függetlenül ezek a példák azt mutatják, hogy a **kwargs rugalmasságot biztosít a programjának számos kulcsszavas argumentum használatához.

Hogyan rendezzük az argumentumokat

Fontos észben tartani a meghatározott sorrendet, amikor argumentumokat rendezünk egy függvényben vagy függvényhívásban. Ez a következő:

  1. Formális pozicionális argumentumok

  2. *args

  3. Kulcsszavas argumentumok

  4. **kwargs

Tegyük fel, hogy az *args és **kwargs paramétereket használja explicit pozicionális paraméterekkel. Ez azt jelenti, hogy a függvénye így fog kinézni:

Másrészt, ha ezeket a paramétereket nevesített kulcsszó-paraméterekkel használja, a függvénye a következő általános struktúrát fogja kapni:

A meghatározott sorrend be nem tartása szintaktikai hibát eredményez a kód futtatásakor. Ezért a legjobb, ha eleve elkerüli ezt a hibát.

Hogyan használjuk az *args és **kwargs paramétereket függvényhívásokban

Végezetül megmutatjuk, hogyan használhatja mindkét paramétert argumentumok átadására függvényeknek. Egy olyan példával kezdjük, amely bemutatja a *args:

Ebben a függvényben három paraméter található: arg_1, arg_2, és arg_3. Létre kell hoznia egy változót, és be kell állítania egy iterálható objektumra. Ebben az esetben ez egy tuple lesz. Ezután a változót a csillag szintaxis használatával adhatja át a függvénynek.

Figyelje meg a kimenetet, amikor a programot a következő paranccsal futtatja: python some_args.py parancs:

A programot át lehet alakítani úgy is, hogy egy iterálható lista adattípust használjon egy másik változónévvel. A következő kód kombinálja a *args paramétert egy nevesített paraméterrel:

A program futtatásakor a kimenet a következő lesz:

Másrészt kulcsszavas argumentumokat is alkalmazhat a **kwargs használatával. Ügyeljen arra, hogy egy olyan változót hozzon létre, amely egy szótárral egyenlő. Ennek 2 kulcs-érték párral kell rendelkeznie. Így adjuk át a változót egy 3 argumentummal rendelkező függvénynek:

Használja ismét a python some_kwargs.py parancsot a program futtatásához:

Összegzés

Az útmutató végére már tisztában kell lennie azzal, hogy mik azok az *args és **kwargs paraméterek, és hogyan működnek. Most már alkalmazhatja ezeket a paramétereket a saját kódjában, hogy programját rugalmassá tegye a jövőbeli felhasználók számára. Ezek ideálisak olyan helyzetekben, amikor nem tudja előre, hány argumentumot fognak használni. Csak ügyeljen arra, hogy óvatos legyen a függvények és paraméterek kritikus elemeivel.

Végezetül, íme további források a blogunkról, amelyek segítenek a sikeres munkában a Pythonnal:

Kellemes programozást!

author

Pranay Kapgate

Szerző · CloudSigma

Preslav Dobrev a CloudSigma kreatív tervezője, aki hagyományos és innovatív marketingcsatornák segítségével következetes vállalati identitás kialakítására összpontosít. Kiemelkedően képes ötvözni a művészi látásmódot a stratégiai marketinggel, hogy hatásos márkatörténeteket hozzon létre.

Hozzászólások

Még nincsenek hozzászólások. Legyen Ön az első.