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ů.
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 = 0pro č 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ů = 0proúčastníkůvvšední dny.hodnoty():
total_attendees = celkový_účastníci + účastnícivrá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.