Späť na blog

Používanie parametrov *args a **kwargs vo vašom kóde: Tutoriál pre Python 3

Používanie parametrov *args a **kwargs vo vašom kóde: Tutoriál pre Python 3

Úvod

Python je jedným z najpopulárnejších programovacích jazykov na svete. V Pythone sú parametre súčasťou definícií funkcií. Umožňujú vám špecifikovať určité argumenty pre funkciu. Argument môže byť funkciou prijatý a aplikovaný.

Pri písaní kódu však nemôžete vedieť, aké presné prípady použitia môžu byť s vaším kódom implementované. Preto je v záujme budúcich programátorov a používateľov vášho programu vhodné odovzdávať funkcii premenlivý počet argumentov. Na tento účel musíte použiť špeciálne parametre. Sú to *args a **kwargs. V tomto návode sa naučíme všetko o parametroch *args a **kwargs v Pythone. Tiež sa naučíme, ako usporiadať argumenty a ako ich použiť pri volaniach funkcií.

Požiadavky

Aby ste mohli postupovať podľa krokov v tomto návode, musíte si pripraviť niekoľko vecí. Najprv musíte mať nainštalovaný Python 3 na vašom serveri so spusteným programovacím prostredím. Tiež musíte mať nainštalovaný program pre váš konkrétny operačný systém (Ubuntu, CentOS, Debian atď.).

Čo je *args a ako to funguje?

Začnime tým, že pochopíme, ako funguje *args . Verzia parametra s jednou hviezdičkou sa používa na odosielanie zoznamov argumentov s premenlivou dĺžkou bez kľúčových slov do funkcií. Majte na pamäti, že hviezdička je najdôležitejším prvkom tohto parametra.

Pre lepšie pochopenie si uveďme príklad. Nasleduje typická funkcia, ktorú môžete nájsť vo svojom kóde, využívajúca dva argumenty:

Ako môžete vidieť, naše argumenty vo vyššie uvedenej funkcii sú x a y. Pri volaní funkcie použijete čísla zodpovedajúce x a y. Povedzme, že odovzdávame celé čísla 5 a 4 pre x a y v tomto poradí:

Teraz môžeme spustiť kód:

Výstup, ktorý dostaneme, bude nasledujúci:

Výstup ukazuje, že celé čísla 5 a 4 boli vynásobené. To znamená, že funkcia multiply(x, y) fungovala.

Teraz povedzme, že by sme chceli nakoniec vynásobiť tri čísla namiesto dvoch. Bohužiaľ, pridanie ďalšieho čísla do vyššie uvedenej funkcie spôsobí takúto chybu:

Preto, ak tušíte, že neskôr budete musieť pridať ďalšie argumenty, použite pre vaše pohodlie parameter *args. Môžete ho použiť takto:

Jednoducho sme nahradili parametre funkcie x a y parametrom *args. Spustením tohto kódu získate súčin pre každé jedno volanie funkcie takto:

Teda, *args je ideálne použiť, keď chcete do svojej funkcie poslať zoznamy argumentov s premenlivou dĺžkou. Vďaka tejto schopnosti môžete pri volaní funkcií odovzdať toľko argumentov, koľko chcete. Tento parameter vám tak umožňuje vytvoriť flexibilnejší kód, ktorý dokáže do funkcie prijať veľké množstvo premenlivých argumentov bez kľúčových slov.

Čo je **kwargs a ako to funguje?

Ďalej tu máme verziu parametrov s dvoma hviezdičkami, ktorou je **kwargs. Na rozdiel od predchádzajúcej formy vám tento parameter umožňuje odovzdávať do funkcie slovníky argumentov s kľúčovými slovami a premenlivou dĺžkou. Podobne ako *args, dve hviezdičky sú najdôležitejším prvkom parametra.

Podobne ako v predchádzajúcej časti, môžete pridať toľko argumentov, koľko chcete. Rozdiel je v tom, že musíte priradiť kľúčové slová. Pre lepšie pochopenie si predstavte nasledujúci príklad. Tu začneme vypísaním **kwargs argumentov, ktoré chceme odovzdať funkcii:

Teraz funkciu zavolajme. Ako môžete vidieť, pridali sme kľúčové argumenty:

Spustenie programu v tomto bode vám ukáže tento výstup:

Existuje však možnosť, že váš dátový typ slovníka je neusporiadaný. To do veľkej miery závisí od verzie Pythonu 3, ktorú používate. Napríklad akákoľvek verzia novšia ako Python 3.6 vám poskytne páry kľúč-hodnota v poradí. Akákoľvek staršia verzia zobrazí výstup v náhodnom poradí. Slovník, ktorý vytvoríte, sa bude volať kwargs. Upozorňujeme, že ho môžete používať a manipulovať s ním ako s akýmkoľvek iným slovníkom v systéme. Pozrime sa, ako môžete parameter **kwargs lepšie využiť a aplikovať.

V nasledujúcom príklade sa pokúsime vytvoriť novú funkciu, ktorá pozdraví slovník s menami. Náš ukážkový slovník bude mať dve mená:

Spustenie programu vám poskytne tento výstup:

Podobne ako v predchádzajúcom príklade, slovníky sa môžu zdať neusporiadané. V dôsledku toho sa poradie mien Casey a Sammy môže v niektorých prípadoch obrátiť.

Ďalej odovzdáme funkcii ďalšie argumenty. To dokáže, že môžete prinútiť **kwargs prijať ľubovoľný počet argumentov, ktorý chcete:

Spustenie programu vám ukáže tento výstup:

Tento výstup môže byť tiež neusporiadaný. Bez ohľadu na to tieto príklady ukazujú, že **kwargs poskytuje vášmu programu flexibilitu používať množstvo kľúčových argumentov.

Ako usporiadať argumenty

Pri usporiadaní argumentov vo funkcii alebo pri volaní funkcie je dôležité mať na pamäti stanovené poradie. Je nasledujúce:

  1. Formálne pozičné argumenty

  2. *args

  3. Kľúčové argumenty

  4. **kwargs

Povedzme, že používate *args a **kwargs s explicitnými pozičnými parametrami. To znamená, že vaša funkcia bude vyzerať takto:

Na druhej strane, použitie týchto parametrov s pomenovanými kľúčovými parametrami poskytne vašej funkcii nasledujúcu všeobecnú štruktúru:

Nedodržanie stanoveného poradia spôsobí pri spustení kódu syntaktickú chybu. Preto je najlepšie vyhnúť sa tejto chybe hneď na začiatku.

Ako používať *args a **kwargs vo volaniach funkcií

Na záver vám ukážeme, ako použiť oba parametre na odovzdanie argumentov do funkcií. Začneme príkladom, ktorý ukazuje *args:

V tejto funkcii sú tri parametre: arg_1, arg_2, a arg_3. Musíte vytvoriť premennú a nastaviť ju na iterovateľný objekt. V tomto prípade to bude tuple. Potom môžete premennú odovzdať do funkcie pomocou syntaxe s hviezdičkou.

Sledujte výstup, keď spustíte program pomocou python some_args.py príkaz:

Program je tiež možné zmeniť na iterovateľný zoznam dátového typu s iným názvom premennej. Nasledujúci kód kombinuje *args s pomenovaným parametrom:

Výstup po spustení programu bude nasledujúci:

Na druhej strane môžete použiť kľúčové argumenty s **kwargs. Uistite sa, že vytvoríte premennú, ktorá sa rovná slovníku. Mal by mať 2 páry kľúč-hodnota. Tu je návod, ako odovzdáme premennú funkcii s 3 argumentmi:

Na spustenie programu znova použite python some_kwargs.py príkaz:

Záver

Na konci tohto návodu by ste mali dobre ovládať, čo sú *args a **kwargs a ako fungujú. Teraz môžete tieto parametre použiť vo svojom vlastnom kóde, aby bol váš program flexibilný pre budúcich používateľov. Sú ideálne pre situácie, keď neviete, koľko argumentov môže byť použitých. Len si dajte pozor na kritické prvky funkcií a parametrov.

Na záver uvádzame ďalšie zdroje z nášho blogu, ktoré vám pomôžu úspešne pracovať s Pythonom:

Príjemné programovanie!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.