Existují tři typy argumentů, které může funkce Pythonu přijmout: standardní, proměnná (*args) a klíčové slovo (**kwargs). Standardní argumenty jsou nejjednodušší, ale mají omezenou funkčnost. Na druhou stranu *args a **kwargs vám umožňují učinit vaše funkce flexibilnějšími tím, že přijmete proměnný počet vstupů.

Typ předávání argumentů, který zvolíte, závisí na povaze vaší funkce a vašem preferovaném stylu programování.

Základní funkce v Pythonu

Abychom pochopili, jak fungují dva argumenty proměnných ve funkcích Pythonu, je nezbytné nejprve pochopit, proč existují. Jednoduchá funkce deklaruje pevný počet anonymních argumentů, jako například:

defaddnum(a, b, c):
vrátit se a + b + c

Tato funkce funguje dobře, ale je zde prostor pro zlepšení. Největší problém je, že zpracovává pouze dva argumenty, takže může sečíst pouze dvě čísla. Co když chcete sečíst dvě nebo čtyři čísla? Tato funkce vám to neumožní. Předání více nebo méně argumentů, než funkce přijímá, povede k chybě TypeError.

Samozřejmě můžete vytvořit více funkcí pro přijímání různého počtu argumentů. Ale to je nepohodlné a nebude se to vůbec dobře škálovat. Budete také muset vytvořit novou funkci pokaždé, když budete chtít zpracovat nový počet vstupů.

instagram viewer

Zde přicházejí na řadu proměnné argumenty a argumenty klíčových slov. Pomocí *args a **kwargs můžete definovat flexibilní funkce, které mohou mít proměnný počet vstupů.

Co je *args v Pythonu?

Hlavní myšlenkou *args v Pythonu je umožnit vám předat vaší funkci proměnný počet vstupů. To se hodí v různých aplikacích. Představte si například program kalkulačky, kde chcete dát uživateli možnost sečíst dvě nebo více čísel a vrátit součet.

Všimněte si, že args je pouze název proměnné; to * je důležité. Pro argument proměnné můžete použít jakýkoli platný název, pokud zahrnete *.

Jak používat *args

Funkci addnum můžete upravit tak, aby přijala proměnný počet vstupů takto:

defaddnum(*args):
celkem = 0

pro č v argumenty:
celkem = celkem + poč

vrátit se celkový

Fragment kódu výše používá smyčku for iterovat přes dodané vstupy.

Poté můžete zavolat funkci addnum s proměnnými argumenty a bude fungovat bez vyvolání chyby:

tisk(addnum(10, 1, 12, 12, 4, 54, 5)) ## vrátí 98
tisk(addnum(14, 54, 5)) # vrátí 73
tisk(addnum(10, 5)) # vrací 15

Co je **kwargs v Pythonu?

Zatímco *args i **kwargs nám umožňují předat funkcím proměnný počet vstupů, poslední jmenovaný je specifický pro argumenty klíčových slov. V případě, že to nevíte, argumenty klíčových slov jsou jen ozdobné názvy pro argumenty se jménem.

Další unikátní věcí na **kwargs je to, že Python reprezentuje hodnotu jako slovník.

Jak používat **kwargs

Stejně jako *args je dvojitá hvězdička důležitým bitem; jako název parametru můžete použít libovolné slovo. Zde je příklad, jak používat **kwargs v Pythonu:

deftýdenní_docházka(**pracovní dny):
celkem_účastníků = 0

proúčastníkůvvšední dny.hodnoty():
total_attendees = celkový_účastníci + účastníci

vrátit se celkem_účastníků

tisk(týdenní_docházka (pondělí = 265, úterý = 698, středa = 365, čtvrtek = 463, pátek = 234)) # návraty 2025
tisk(týdenní_docházka (pondělí = 265, pátek = 234)) # vrátí 499
tisk(týdenní_docházka (středa = 365, čtvrtek = 463, pátek = 234)) # vrátí 1062

Fragment kódu výše také používá cyklus for, ale tentokrát s vestavěnou metodou value() Pythonu. Tato metoda vrací objekt zobrazení všech hodnot ve slovníku. Metoda values() vám to umožňuje procházet slovníkem Pythonu bez potíží.

Použijte variabilní argumenty, aby byly vaše funkce Pythonu flexibilní

Argumenty funkcí jsou užitečné, ale některé funkce mohou těžit z přijímání různého počtu argumentů. Argumenty pojmenovaných klíčových slov mohou učinit váš kód čitelnějším a snadněji se používá. Měli byste přijmout argumenty *args a **kwargs Pythonu. Jejich použití je velmi jednoduché a díky nim můžete své funkce a programy zpružnit.

Doufáme, že podle výše uvedených kroků a úryvků kódu můžete pro své funkce používat proměnné klíčové slovo a jiné argumenty než klíčová slova.