logo

*args en **kwargs in Python

In dit artikel bespreken we wat ** (dubbele ster/asterisk) en * (ster/asterisk) doen voor parameters in Python , Hier zullen we het ook behandelen args- en kwargs-voorbeelden in Python. We kunnen een variabel aantal argumenten aan een functie doorgeven met behulp van speciale symbolen.

Er zijn twee speciale symbolen:



*args en **kwargs in Python

hoe groot is mijn computerscherm

Speciale symbolen die worden gebruikt voor het doorgeven van argumenten in Python:

  • *args (niet-trefwoordargumenten)
  • ** kwargs (trefwoordargumenten)

Opmerking: We gebruiken het jokerteken of de *-notatie op deze manier – *args OR **kwargs – als het argument van onze functie als we twijfels hebben over het aantal argumenten dat we in een functie moeten doorgeven.



Wat is Python *args?

De speciale syntaxis *argumenten in functiedefinities in Python wordt gebruikt om een ​​variabel aantal argumenten aan een functie door te geven. Het wordt gebruikt om een ​​argumentenlijst met variabele lengte zonder trefwoorden door te geven.

  • De syntaxis is om het symbool * te gebruiken om een ​​variabel aantal argumenten op te nemen; volgens afspraak wordt het vaak gebruikt met het woord args.
  • Wat *argumenten wat u kunt doen, is meer argumenten opnemen dan het aantal formele argumenten dat u eerder hebt gedefinieerd. Met *argumenten , kan een willekeurig aantal extra argumenten aan uw huidige formele parameters worden gekoppeld (inclusief nul extra argumenten).
  • We willen bijvoorbeeld een vermenigvuldigingsfunctie maken die een willekeurig aantal argumenten kan aannemen en deze allemaal met elkaar kan vermenigvuldigen. Dit kan met behulp van *args.
  • Met behulp van de * wordt de variabele die we associëren met de * itereerbaar, wat betekent dat je er dingen kunt doen zoals er overheen itereren, een aantal functies van hogere orde uitvoeren, zoals kaart en filter, enz.

Voorbeeld 1:

Python-programma om *args voor een variabel aantal argumenten te illustreren



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

Uitgang:

Hello Welcome to techcodeview.com>

Voorbeeld 2:

Python-programma om *args te illustreren met een eerste extra argument

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

Uitgang:

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

Wat is Python **kwargs?

De speciale syntaxis ** kwargs in functiedefinities in Python wordt gebruikt om een ​​trefwoordenlijst met argumenten van variabele lengte door te geven. Wij gebruiken de naam kwargs met de dubbele ster. De reden is dat de dubbele ster ons in staat stelt trefwoordargumenten (en een willekeurig aantal daarvan) door te geven.

  • Bij een trefwoordargument geeft u een naam aan de variabele terwijl u deze doorgeeft aan de functie.
  • Hierbij kan gedacht worden aan de kwargs als een woordenboek dat elk trefwoord toewijst aan de waarde die we ernaast doorgeven. Dat is de reden waarom wanneer we herhalen over de kwargs er lijkt geen enkele volgorde te zijn waarin ze zijn afgedrukt.

Voorbeeld 1:

Python-programma om *kwargs te illustreren voor een variabel aantal trefwoordargumenten. Hier accepteert **kwargs een argument met variabele lengte met trefwoorden dat wordt doorgegeven door de functieaanroep. for first=’Geeks’ eerst is de sleutel en ‘Geeks’ is een waarde. Simpel gezegd: wat we toekennen is waarde, en aan wie we toekennen is de sleutel.

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

Uitgang:

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

Voorbeeld 2:

Python-programma om **kwargs voor een variabel aantal trefwoordargumenten te illustreren met één extra argument. Allemaal hetzelfde, maar één verandering is dat we niet-trefwoordargumenten doorgeven die acceptabel zijn via positioneel argument (arg1 in myFun). en trefwoordargumenten die we doorgeven, zijn acceptabel voor **kwargs. simpel toch?

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

Uitgang:

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

Zowel *args als **kwargs in Python gebruiken om een ​​functie aan te roepen

Voorbeeld 1:

Hier geven we *args en **kwargs door als argument in de myFun-functie. Het doorgeven van *args aan myFun betekent eenvoudigweg dat we de positionele argumenten en argumenten met variabele lengte doorgeven die in args voorkomen. dus, Geeks gaan naar de arg1 , voor gaan naar de arg2, en Geeks gaan naar de arg3. Wanneer we **kwargs als argument doorgeven aan myFun, betekent dit dat het trefwoordargumenten accepteert. Hier is arg1 de sleutel en de waarde is Geeks, die wordt doorgegeven aan arg1, en net zo worden for en Geeks doorgegeven aan respectievelijk arg2 en arg3. Nadat we alle gegevens hebben doorgegeven, drukken we alle gegevens in regels af.

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

Uitgang:

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

Voorbeeld 2:

Hier geven we *args en **kwargs door als argument in de myFun-functie. waar ‘nerds’, ‘voor’, ‘nerds’ wordt doorgegeven als *args, en first=Geeks, midden=voor, laatste=Geeks wordt doorgegeven als **kwargs en afdrukken in dezelfde lijn.

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

Uitgang:

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

Gebruik *args en **kwargs in Python om waarden van objecten in te stellen

Voorbeeld 1: Python *args gebruiken

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

Uitgang:

red 250>

Voorbeeld 2: Python **kwargs gebruiken

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

Uitgang:

red 250>