Existujú tri typy argumentov, ktoré môže funkcia Pythonu akceptovať: štandardné, premenné (*args) a kľúčové slovo (**kwargs). Štandardné argumenty sú najjednoduchšie, ale majú obmedzenú funkčnosť. Na druhej strane, *args a **kwargs vám umožňujú urobiť vaše funkcie flexibilnejšími, akceptovaním premenlivého počtu vstupov.

Typ odovzdávania argumentov, ktorý si vyberiete, závisí od povahy vašej funkcie a vášho preferovaného štýlu programovania.

Základné funkcie v Pythone

Aby sme pochopili, ako fungujú dva premenné argumenty vo funkciách Pythonu, je nevyhnutné pochopiť, prečo vôbec existujú. Jednoduchá funkcia deklaruje pevný počet anonymných argumentov, ako napríklad:

defaddnum(a, b, c):
vrátiť a + b + c

Táto funkcia funguje dobre, ale je tu priestor na zlepšenie. Najväčším problémom je, že spracováva iba dva argumenty, takže môže pridať iba dve čísla. Čo ak chcete pridať dve alebo štyri čísla? Táto funkcia vám to nedovolí. Zadanie väčšieho alebo menšieho počtu argumentov, ako funkcia akceptuje, povedie k chybe typu.

instagram viewer

Samozrejme, môžete vytvoriť viac funkcií na prijatie rôzneho počtu argumentov. Ale to je nepohodlné a nebude sa to vôbec dobre škálovať. Budete tiež musieť vytvoriť novú funkciu zakaždým, keď budete chcieť spracovať nový počet vstupov.

Tu prichádzajú na rad variabilné argumenty a argumenty kľúčových slov. Pomocou *args a **kwargs môžete definovať flexibilné funkcie, ktoré môžu mať premenlivý počet vstupov.

Čo je *args v Pythone?

Hlavnou myšlienkou *args v Pythone je umožniť vám odovzdať premenlivý počet vstupov do vašej funkcie. To sa hodí v rôznych aplikáciách. Predstavte si napríklad program kalkulačky, v ktorom chcete používateľovi poskytnúť možnosť pridať dve alebo viac čísel a vrátiť súčet.

Všimnite si, že args je len názov premennej; to * je dôležité. Pre argument premennej môžete použiť akýkoľvek platný názov, ak zahrniete *.

Ako používať *args

Funkciu addnum môžete upraviť tak, aby prijala premenlivý počet vstupov takto:

defaddnum(*args):
celkom = 0

pre č v argumenty:
spolu = celkom + poč

vrátiť Celkom

Útržok kódu vyššie používa cyklus for iterovať cez dodané vstupy.

Potom môžete zavolať funkciu addnum s premennými argumentmi a bude fungovať bez vyvolania chyby:

vytlačiť(addnum(10, 1, 12, 12, 4, 54, 5)) ## vráti 98
vytlačiť(addnum(14, 54, 5)) # vráti 73
vytlačiť(addnum(10, 5)) # návratov 15

Čo je to **kwargs v Pythone?

Zatiaľ čo *args aj **kwargs nám umožňujú odovzdať premenlivý počet vstupov do funkcií, druhý je špecifický pre argumenty kľúčových slov. V prípade, že neviete, argumenty kľúčových slov sú len ozdobné názvy argumentov s názvom.

Ďalšou jedinečnosťou **kwargs je, že Python predstavuje hodnotu ako slovník.

Ako používať **kwargs

Rovnako ako *args, dvojitá hviezdička je dôležitá; ako názov parametra môžete použiť ľubovoľné slovo. Tu je príklad, ako používať **kwargs v Pythone:

deftýždenná_dochádzka(**dni v týždni):
celkový_počet účastníkov = 0

preúčastnícivdni v týždni.hodnoty():
celkom_účastníkov = celkom_účastníkov + účastníkov

vrátiť celkový_počet účastníkov

vytlačiť(týždenná_účasť (pondelok = 265, utorok = 698, streda = 365, štvrtok = 463, piatok = 234)) # návratov 2025
vytlačiť(týždenná_účasť (pondelok = 265, piatok = 234)) # vráti 499
vytlačiť(týždenná_účasť (streda = 365, štvrtok = 463, piatok = 234)) # vráti 1062

Útržok kódu vyššie tiež používa cyklus for, ale tentoraz so vstavanou metódou values() Pythonu. Táto metóda vráti objekt zobrazenia všetkých hodnôt v slovníku. Metóda values() vám to umožňuje prechádzať slovníkom Pythonu bez problémov.

Použite variabilné argumenty, aby boli vaše funkcie Pythonu flexibilné

Argumenty funkcií sú praktické, ale niektoré funkcie môžu ťažiť z akceptovania premenlivého počtu argumentov. Argumenty pomenovaných kľúčových slov môžu urobiť váš kód čitateľnejším a jednoduchšie použiteľným. Mali by ste prijať Pythonove argumenty *args a **kwargs. Ich použitie je celkom jednoduché a vďaka nim môžete svoje funkcie a programy flexibilnejšie.

Dúfame, že podľa krokov a úryvkov kódu uvedených vyššie teraz môžete pre svoje funkcie používať variabilné argumenty kľúčových slov a iné ako kľúčové slová.