Python * args a ** kwargs (s příklady)

V tomto článku se na příkladech seznámíme s Python * args a ** kwargs, jejich použitím a funkcemi.

V programování definujeme funkci pro vytvoření opakovaně použitelného kódu, který provádí podobnou operaci. K provedení této operace voláme funkci se specifickou hodnotou, tato hodnota se v Pythonu nazývá argument funkce.

Doporučujeme vám přečíst si funkce Python a argumenty funkce Pythonu.

Předpokládejme, že definujeme funkci pro přidání 3 čísel.

Příklad 1: Funkce pro přidání 3 čísel

 def adder(x,y,z): print("sum:",x+y+z) adder(10,12,13)

Když spustíme výše uvedený program, výstup bude

 součet: 35

Ve výše uvedeném programu máme adder()funkci se třemi argumenty x, yaz. Když při volání adder()funkce předáme tři hodnoty , dostaneme jako výstup součet 3 čísel.

Podívejme se, co se stane, když ve adder()funkci předáme více než 3 argumenty .

 def adder(x,y,z): print("sum:",x+y+z) adder(5,10,15,20,25)

Když spustíme výše uvedený program, výstup bude

 TypeError: adder () trvá 3 poziční argumenty, ale 5 bylo dáno

Ve výše uvedeném programu jsme funkci předali 5 argumentů adder()místo 3 argumentů, kvůli kterým jsme se dostali TypeError.

Úvod do * args a ** kwargs v Pythonu

V Pythonu můžeme funkci předat proměnný počet argumentů pomocí speciálních symbolů. Existují dva speciální symboly:

  1. * args (argumenty bez klíčových slov)
  2. ** kwargs (argumenty klíčových slov)

Používáme * args a ** kwargs jako argument, když si nejsme jisti počtem argumentů, které mají být předány funkcím.

Python * args

Stejně jako ve výše uvedeném příkladu si nejsme jisti počtem argumentů, které lze předat funkci. Python má * args, které nám umožňují předat proměnný počet argumentů bez klíčových slov do funkce.

Ve funkci bychom měli *před název parametru použít hvězdičku k předání argumentů proměnné délky. Argumenty se předávají jako n-tice a tyto předané argumenty vytvářejí n-tici uvnitř funkce se stejným názvem jako parametr bez hvězdičky *.

Příklad 2: Použití * args k předání argumentů proměnné délky do funkce

 def adder(*num): sum = 0 for n in num: sum = sum + n print("Sum:",sum) adder(3,5) adder(4,5,6,7) adder(1,2,3,5,6)

Když spustíme výše uvedený program, výstup bude

 Součet: 8 Součet: 22 Součet: 17

Ve výše uvedeném programu jsme použili * num jako parametr, který nám umožňuje předat adder()funkci seznam argumentů s proměnnou délkou . Uvnitř funkce máme smyčku, která přidá předaný argument a vytiskne výsledek. Funkci jsme předali 3 různé n-tice s proměnnou délkou jako argument.

Python ** kwargs

Python předává argument s proměnnou délkou bez klíčového slova do funkce pomocí * args, ale nemůžeme to použít k předání argumentu klíčového slova. Pro tento problém má Python řešení zvané ** kwargs, což nám umožňuje předat proměnné délce argumentů klíčových slov funkci.

Ve funkci používáme dvojitou hvězdičku **před názvem parametru k označení tohoto typu argumentu. Argumenty jsou předávány jako slovník a tyto argumenty vytvářejí slovník uvnitř funkce se stejným názvem jako parametr bez dvojité hvězdičky **.

Příklad 3: Použití ** kwargs k předání argumentů klíčových slov proměnné do funkce

 def intro(**data): print("Data type of argument:",type(data)) for key, value in data.items(): print("() is ()".format(key,value)) intro(Firstname="Sita", Lastname="Sharma", Age=22, Phone=1234567890) intro(Firstname="John", Lastname="Wood", Email="[email protected]", Country="Wakanda", Age=25, Phone=9876543210)

Když spustíme výše uvedený program, výstup bude

 Datový typ argumentu: Jméno je Sita Příjmení je Sharma Věk je 22 Telefon je 1234567890 Typ dat argumentu: Jméno je John Příjmení je Wood E-mail je [email protected] Země je Wakanda Věk je 25 Telefon je 9876543210

Ve výše uvedeném programu máme funkci intro()s ** daty jako parametrem. intro()Funkci jsme předali dva slovníky s proměnnou délkou argumentu . Máme pro intro()funkci loop inside, která pracuje na datech předaného slovníku a tiskne hodnotu slovníku.

Věci k zapamatování:

  • * args a * kwargs jsou speciální klíčová slova, která umožňují funkci přijmout argument s proměnnou délkou.
  • * args předává variabilní počet seznamů argumentů bez klíčových slov a na které operaci seznamu lze provést.
  • ** kwargs předává proměnný počet slovníků argumentů klíčových slov do funkce, na které lze provádět operaci slovníku.
  • * args a ** kwargs zajišťují flexibilitu funkce.

Zajímavé články...