logo

*args in **kwargs v Pythonu

V tem članku bomo opisali, kaj naredita ** (dvojna zvezdica/zvezdica) in * (zvezdica/zvezdica) za parametre v Python , Tukaj bomo tudi pokrivali primeri args in kwargs v Pythonu. S pomočjo posebnih simbolov lahko funkciji posredujemo spremenljivo število argumentov.

len niza v Javi

Obstajata dva posebna simbola:



*args in **kwargs v Pythonu

Posebni simboli, ki se uporabljajo za posredovanje argumentov v Pythonu:

  • *args (argumenti, ki niso ključne besede)
  • **kwargs (argumenti ključnih besed)

Opomba: Uporabljamo nadomestni znak ali zapis *, kot je ta – *args ALI **kwargs – kot argument naše funkcije, ko dvomimo o številu argumentov, ki bi jih morali posredovati v funkciji.



Kaj je Python *args?

Posebna sintaksa *args v definicijah funkcij v Pythonu se uporablja za posredovanje spremenljivega števila argumentov funkciji. Uporablja se za posredovanje seznama argumentov s spremenljivo dolžino brez ključnih besed.

  • Sintaksa je uporaba simbola * za sprejemanje spremenljivega števila argumentov; po dogovoru se pogosto uporablja z besedo args.
  • Kaj *args vam omogoča, da sprejmete več argumentov od števila formalnih argumentov, ki ste jih predhodno definirali. z *args , lahko vašim trenutnim formalnim parametrom prilepite poljubno število dodatnih argumentov (vključno z nič dodatnimi argumenti).
  • Na primer, želimo izdelati funkcijo množenja, ki sprejme poljubno število argumentov in jih lahko pomnoži vse skupaj. To je mogoče storiti z uporabo *args.
  • Z uporabo * postane spremenljivka, ki jo povežemo z *, ponovljiva, kar pomeni, da lahko počnete stvari, kot je ponavljanje po njej, izvajanje nekaterih funkcij višjega reda, kot sta zemljevid in filter itd.

Primer 1:

Program Python za ponazoritev *argov za spremenljivo število argumentov



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

Izhod:

Hello Welcome to techcodeview.com>

Primer 2:

Program Python za ponazoritev *argov s prvim dodatnim argumentom

java vizualizator
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')>

Izhod:

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

Kaj je Python **kwargs?

Posebna sintaksa **kwargs v definicijah funkcij v Pythonu se uporablja za posredovanje seznama argumentov spremenljive dolžine s ključnimi besedami. Uporabljamo ime kwargs z dvojno zvezdo. Razlog je v tem, da nam dvojna zvezdica omogoča prehod skozi argumente ključnih besed (in poljubno število le-teh).

  • Argument ključne besede je mesto, kjer podate ime spremenljivki, ko jo posredujete v funkcijo.
  • Lahko pomislimo na kwargs kot slovar, ki vsako ključno besedo preslika v vrednost, ki jo posredujemo poleg nje. Zato, ko ponavljamo čez kwargs zdi se, da ni nobenega vrstnega reda, v katerem so bili natisnjeni.

Primer 1:

Program Python za ponazoritev *kwargs za spremenljivo število argumentov ključnih besed. Tukaj **kwargs sprejme argument spremenljive dolžine s ključnimi besedami, ki ga posreduje klic funkcije. for first='Geeks' first je ključ in 'Geeks' je vrednost. z enostavnimi besedami, tisto, kar dodelimo, je vrednost, in komu dodelimo, je ključno.

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

Izhod:

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

Primer 2:

Program Python za ponazoritev **kwargov za spremenljivo število argumentov ključnih besed z enim dodatnim argumentom. Vse isto, vendar ena sprememba je, da posredujemo argument, ki ni ključna beseda, ki je sprejemljiv s položajnim argumentom (arg1 v myFun). in argumenti ključnih besed, ki jih posredujemo, so sprejemljivi za **kwargs. preprosto kajne?

Python
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')>

Izhod:

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

Uporaba obeh *args in **kwargs v Pythonu za klic funkcije

Primer 1:

pisava iz lateksa

Tukaj posredujemo *args in **kwargs kot argument v funkciji myFun. Posredovanje *argov v myFun preprosto pomeni, da posredujemo pozicijske argumente in argumente spremenljive dolžine, ki jih vsebujejo argumenti. torej Geeki preidejo na arg1, for pass na arg2, Geeki pa na arg3. Ko posredujemo **kwargs kot argument myFun, to pomeni, da sprejema argumente ključnih besed. Tukaj je arg1 ključ, vrednost pa je Geeks, ki se posreduje arg1, prav tako pa se for in Geeks preneseta na arg2 oziroma arg3. Po posredovanju vseh podatkov izpišemo vse podatke v vrsticah.

python
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)>

Izhod:

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

Primer 2:

Tukaj posredujemo *args in **kwargs kot argument v funkciji myFun. kje 'geeki', 'za', 'geeki' se posreduje kot *args in first=Geeks, mid=za, zadnji=Geeks se posreduje kot **kwargs in tiskanje v isti vrstici.

shweta tiwari igralec
python
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')>

Izhod:

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

Uporaba *args in **kwargs v Pythonu za nastavitev vrednosti predmeta

  • *args sprejme argumente kot a tuple .
  • **kwargs sprejema argumente kot a slovar .

Primer 1: uporaba Python *args

Python
# 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)>

Izhod:

red 250>

Primer 2: uporaba Python **kwargs

Python
# 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)>

Izhod:

red 250>