logo

*args ja **kwargs Pythonissa

Tässä artikkelissa kerromme, mitä ** (kaksoistähti/tähti) ja * (tähti/tähti) tekevät parametreille Python , Täällä me myös kattaa args ja kwargs esimerkkejä Pythonissa. Voimme välittää muuttuvan määrän argumentteja funktiolle erikoissymbolien avulla.

On olemassa kaksi erikoissymbolia:



*args ja **kwargs Pythonissa

Pythonissa argumenttien välittämiseen käytetyt erikoissymbolit:

sklearn tarkkuuspisteet
  • *argumentit (ei-avainsana-argumentit)
  • **kwargs (avainsana-argumentit)

Huomautus: Käytämme jokerimerkkiä tai *-merkintää näin – *args TAI **kwargs – funktiomme argumenttina, kun epäilemme, kuinka monta argumenttia meidän tulee välittää funktiossa.



Mikä on Python *args?

Erityinen syntaksi *argumentit Pythonin funktiomäärittelyissä käytetään siirtämään muuttuva määrä argumentteja funktiolle. Sitä käytetään ei-avainsanamuotoisen, muuttuvan pituisen argumenttiluettelon välittämiseen.

  • Syntaksi on käyttää symbolia * ottaaksesi muuttuvan määrän argumentteja; sopimuksen mukaan sitä käytetään usein sanan args kanssa.
  • Mitä *argumentit Voit ottaa enemmän argumentteja kuin aiemmin määrittämiesi muodollisten argumenttien määrä. Kanssa *argumentit , minkä tahansa määrän lisäargumentteja voidaan liittää nykyisiin muodollisiin parametreihisi (mukaan lukien nolla ylimääräistä argumenttia).
  • Haluamme esimerkiksi tehdä kertofunktion, joka ottaa minkä tahansa määrän argumentteja ja pystyy kertomaan ne kaikki yhdessä. Se voidaan tehdä käyttämällä *args.
  • Käyttämällä *-muuttujaa, jonka yhdistämme *:ään, tulee iteroitava, mikä tarkoittaa, että voit esimerkiksi iteroida sen yli, suorittaa joitain korkeamman asteen toimintoja, kuten karttaa ja suodatinta, jne.

Esimerkki 1:

Python-ohjelma havainnollistaa *argumentteja vaihtelevalle määrälle argumentteja



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

Lähtö:

Hello Welcome to techcodeview.com>

Esimerkki 2:

Python-ohjelma havainnollistaa *argumentteja ensimmäisellä lisäargumentilla

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

Lähtö:

merkkijonon muuntaminen json-muotoon javassa
First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>

Mikä on Python **kwargs?

Erityinen syntaksi **kwargs Pythonin funktiomäärittelyissä käytetään avainsanoilla varustetun, muuttuvan pituuden argumenttiluettelon välittämiseen. Käytämme nimeä kwargs kaksoistähdellä. Syynä on se, että kaksoistähti antaa meille mahdollisuuden käydä läpi avainsanaargumentteja (ja minkä tahansa määrän niitä).

  • Avainsana-argumentti on paikka, jossa annat muuttujalle nimen, kun annat sen funktioon.
  • Voidaan ajatella kwargs sanakirjana, joka kartoittaa jokaisen avainsanan arvoon, jonka annamme sen rinnalla. Siksi, kun toistamme yli kwargs ei näytä olevan mitään järjestystä, jossa ne tulostettiin.

Esimerkki 1:

Python-ohjelma havainnollistaa *kwargs vaihtelevalle määrälle avainsanaargumentteja. Tässä **kwargs hyväksyy funktiokutsun välittämän avainsanan muuttuvan pituuden argumentin. for first = 'Nörtti' ensimmäinen on avain ja 'Geeks' on arvo. Yksinkertaisesti sanottuna se, mitä annamme, on arvoa, ja se, kenelle annamme, on avainasemassa.

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

Lähtö:

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

Esimerkki 2:

Python-ohjelma havainnollistaa **kwargs-funktiota vaihtelevalle määrälle avainsanaargumentteja yhdellä ylimääräisellä argumentilla. Kaikki sama, mutta yksi muutos on, että välitämme ei-avainsana-argumentin, joka on hyväksyttävä sijaintiargumentilla (arg1 myFunissa). ja avainsana-argumentit, jotka välitämme, ovat **kwargin hyväksymiä. yksinkertainen eikö?

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

Lähtö:

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

Sekä *args- että **kwargs-komentojen käyttäminen Pythonissa funktion kutsumiseen

Esimerkki 1:

Tässä välitetään *args ja **kwargs argumenttina myFun-funktiossa. *args:n välittäminen myFunille tarkoittaa yksinkertaisesti sitä, että välitämme argien sisältämät sijainti- ja muuttuvapituiset argumentit. niin, nörtti siirtyy arg1:een, siirtyy arg2:een ja Geeks siirtyy arg3:een. Kun annamme **kwargs-argumentin myFunille, se tarkoittaa, että se hyväksyy avainsanaargumentit. Tässä arg1 on avain ja arvo on Geeks, joka välitetään arg1:lle, ja samoin for ja Geeks siirtyvät arg2:een ja arg3:een. Kun kaikki tiedot on siirretty, tulostamme kaikki tiedot riveinä.

for silmukan tyypit
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)>

Lähtö:

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

Esimerkki 2:

Tässä välitetään *args ja **kwargs argumenttina myFun-funktiossa. missä 'nörtti', 'for', 'nörtti' annetaan *args, ja ensimmäinen = Nörtti, keski = for, viimeinen = Nörtti on hyväksytty nimellä **kwargs and printing samalla rivillä.

java lisäyslajittelu
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')>

Lähtö:

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

Pythonin *args- ja **kwargs-komentojen käyttäminen objektin arvojen asettamiseen

Esimerkki 1: 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)>

Lähtö:

red 250>

Esimerkki 2: Python **kwargs -komennolla

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

Lähtö:

red 250>