logo

*args a **kwargs v Pythonu

V tomto článku se budeme zabývat tím, co ** (dvojitá hvězdička/hvězdička) a * (hvězdička/hvězdička) dělají pro parametry v Krajta , Zde se také budeme věnovat příklady args a kwargs v Pythonu. Pomocí speciálních symbolů můžeme funkci předat proměnný počet argumentů.

Existují dva speciální symboly:



*args a **kwargs v Pythonu

Speciální symboly používané pro předávání argumentů v Pythonu:

  • *args (argumenty jiné než klíčová slova)
  • **kwargs (argumenty klíčových slov)

Poznámka: Zástupný znak nebo * zápis jako tento – *args OR **kwargs – používáme jako argument naší funkce, když máme pochybnosti o počtu argumentů, které bychom měli funkci předat.



Co je to Python *args?

Speciální syntaxe *argumenty v definicích funkcí v Pythonu se používá k předání proměnného počtu argumentů do funkce. Používá se k předání seznamu argumentů proměnné délky bez klíčových slov.

  • Syntaxí je použití symbolu * k převzetí proměnného počtu argumentů; podle konvence se často používá se slovem args.
  • Co *argumenty vám umožňuje přijmout více argumentů, než je počet formálních argumentů, které jste dříve definovali. S *argumenty , lze k vašim aktuálním formálním parametrům připojit libovolný počet dalších argumentů (včetně nulových argumentů navíc).
  • Například chceme vytvořit funkci násobení, která má libovolný počet argumentů a je schopna je všechny znásobit. To lze provést pomocí *args.
  • Pomocí * se proměnná, kterou spojujeme s *, stává iterovatelnou, což znamená, že můžete dělat věci, jako je iterace, spouštět některé funkce vyššího řádu, jako je mapa a filtr atd.

Příklad 1:

přidání do pole java

Program Python pro ilustraci *args pro proměnný počet argumentů



krajta
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>

Výstup:

Hello Welcome to techcodeview.com>

Příklad 2:

Program Python pro ilustraci *args s prvním argumentem navíc

Python3
def myFun(arg1, *argv): print('First argument :', arg1) for arg in argv: print('Next argument through *argv :', arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>

Výstup:

First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>

Co je Python **kwargs?

Speciální syntaxe **kwargs v definicích funkcí v Pythonu se používá k předání seznamu argumentů s proměnnou délkou s klíčovými slovy. Používáme jméno kwargové s dvojitou hvězdou. Důvodem je, že dvojitá hvězdička nám umožňuje procházet argumenty klíčových slov (a libovolným počtem).

  • Argument klíčového slova je místo, kde zadáváte název proměnné, když ji předáváte do funkce.
  • Člověk může myslet na kwargové jako slovník, který mapuje každé klíčové slovo na hodnotu, kterou mu předáváme. To je důvod, proč když iterujeme přes kwargové zdá se, že neexistuje žádné pořadí, ve kterém byly vytištěny.

Příklad 1:

Program Python pro ilustraci *kwargs pro proměnný počet argumentů klíčových slov. Zde **kwargové přijímají klíčový argument proměnné délky předaný voláním funkce. for first=’Geeks’ first je klíč a ‘Geeks’ je hodnota. jednoduše řečeno, to, co přiřadíme, je hodnota, a to, komu přiřadíme, je klíčové.

Krajta
def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>

Výstup:

first == Geeks mid == for last == Geeks>

Příklad 2:

Pythonský program pro ilustraci **kwargs pro proměnný počet argumentů klíčových slov s jedním argumentem navíc. Vše stejné, ale jednou změnou je, že předáváme neklíčový argument, který je přijatelný pozičním argumentem (arg1 v myFun). a argumenty klíčových slov, které předáváme, jsou přijatelné pro **kwargs. jednoduché že?

Krajta
def myFun(arg1, **kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun('Hi', first='Geeks', mid='for', last='Geeks')>

Výstup:

first == Geeks mid == for last == Geeks>

Použití *args i **kwargs v Pythonu k volání funkce

Příklad 1:

složení vztahu

Zde předáváme *args a **kwargs jako argument ve funkci myFun. Předání *args do myFun jednoduše znamená, že předáme poziční argumenty a argumenty proměnné délky, které jsou obsaženy v argumentech. takže Geekové přejdou na arg1 , pro přihrávku na arg2 a Geekové přejdou na arg3. Když předáme **kwargs jako argument do myFun, znamená to, že přijímá argumenty klíčových slov. Zde je klíč arg1 a hodnota je Geeks, která je předána arg1, a stejně tak pro a Geeks předává arg2 a arg3. Po předání všech dat vytiskneme všechna data v řádcích.

krajta
def myFun(arg1, arg2, arg3): print('arg1:', arg1) print('arg2:', arg2) print('arg3:', arg3) # Now we can use *args or **kwargs to # pass arguments to this function : args = ('Geeks', 'for', 'Geeks') myFun(*args) kwargs = {'arg1': 'Geeks', 'arg2': 'for', 'arg3': 'Geeks'} myFun(**kwargs)>

Výstup:

arg1: Geeks arg2: for arg3: Geeks arg1: Geeks arg2: for arg3: Geeks>

Příklad 2:

Zde předáváme *args a **kwargs jako argument ve funkci myFun. kde „geekové“, „pro“, „geekové“ se předává jako *args a first=Geekové, střední=pro, poslední=Geekové se předává jako **kwargs a tisk ve stejném řádku.

krajta
def myFun(*args, **kwargs): print('args: ', args) print('kwargs: ', kwargs) # Now we can use both *args ,**kwargs # to pass arguments to this function : myFun('geeks', 'for', 'geeks', first='Geeks', mid='for', last='Geeks')>

Výstup:

args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>

Použití *args a **kwargs v Pythonu k nastavení hodnot objektu

  • *args přijímá argumenty jako a tuple .
  • **kwargs přijímá argumenty jako a slovník .

Příklad 1: použití Pythonu *args

Krajta
# defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, *args): # access args index like array does self.speed = args[0] self.color = args[1] # creating objects of car class audi = Car(200, 'red') bmw = Car(250, 'black') mb = Car(190, 'white') # printing the color and speed of the cars print(audi.color) print(bmw.speed)>

Výstup:

red 250>

Příklad 2: použití Pythonu **kwargs

Krajta
# defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, **kwargs): # access args index like array does self.speed = kwargs['s'] self.color = kwargs['c'] # creating objects of car class audi = Car(s=200, c='red') bmw = Car(s=250, c='black') mb = Car(s=190, c='white') # printing the color and speed of cars print(audi.color) print(bmw.speed)>

Výstup:

red 250>