Python * args en ** kwargs (met voorbeelden)

In dit artikel zullen we met voorbeelden leren over Python * args en ** kwargs, hun gebruik en functies.

Bij het programmeren definiëren we een functie om een ​​herbruikbare code te maken die een vergelijkbare bewerking uitvoert. Om die bewerking uit te voeren, roepen we een functie aan met de specifieke waarde, deze waarde wordt in Python een functieargument genoemd.

We raden u aan om Python-functie en Python-functieargumenten te lezen.

Stel dat we een functie definiëren voor het optellen van 3 getallen.

Voorbeeld 1: functie om 3 getallen toe te voegen

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

Wanneer we het bovenstaande programma uitvoeren, is de uitvoer

 som: 35

In bovenstaand programma hebben we een adder()functie met drie argumenten x, y en z. Wanneer we drie waarden doorgeven tijdens het aanroepen van de adder()functie, krijgen we de som van de 3 getallen als uitvoer.

Laten we eens kijken wat er gebeurt als we meer dan 3 argumenten in de adder()functie doorgeven .

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

Wanneer we het bovenstaande programma uitvoeren, is de uitvoer

 TypeError: adder () accepteert 3 positionele argumenten, maar er zijn er 5 gegeven

In het bovenstaande programma hebben we 5 argumenten doorgegeven aan de adder()functie in plaats van 3 argumenten waardoor we kregen TypeError.

Inleiding tot * args en ** kwargs in Python

In Python kunnen we een variabel aantal argumenten doorgeven aan een functie met behulp van speciale symbolen. Er zijn twee speciale symbolen:

  1. * args (niet-trefwoordargumenten)
  2. ** kwargs (trefwoordargumenten)

We gebruiken * args en ** kwargs als argument als we niet zeker zijn over het aantal argumenten dat in de functies moet worden doorgegeven.

Python * args

Net als in het bovenstaande voorbeeld zijn we niet zeker over het aantal argumenten dat aan een functie kan worden doorgegeven. Python heeft * args waarmee we het variabele aantal niet-trefwoordargumenten kunnen doorgeven om te functioneren.

In de functie moeten we een asterisk *voor de parameternaam gebruiken om argumenten van variabele lengte door te geven. De argumenten worden doorgegeven als een tuple en deze doorgegeven argumenten vormen een tuple binnen de functie met dezelfde naam als de parameter, met uitzondering van asterisk *.

Voorbeeld 2: * args gebruiken om de argumenten van variabele lengte door te geven aan de functie

 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)

Wanneer we het bovenstaande programma uitvoeren, is de uitvoer

 Som: 8 Som: 22 Som: 17

In het bovenstaande programma hebben we * num als parameter gebruikt waarmee we een lijst met argumenten van variabele lengte aan de adder()functie kunnen doorgeven . Binnen de functie hebben we een lus die het doorgegeven argument toevoegt en het resultaat afdrukt. We hebben 3 verschillende tupels met variabele lengte doorgegeven als argument voor de functie.

Python ** kwargs

Python geeft een niet-trefwoordargument met variabele lengte door aan de functie met * args, maar we kunnen dit niet gebruiken om het trefwoordargument door te geven. Voor dit probleem heeft Python een oplossing genaamd ** kwargs, waarmee we de variabele lengte van trefwoordargumenten aan de functie kunnen doorgeven.

In de functie gebruiken we de dubbele asterisk **voor de parameternaam om dit type argument aan te duiden. De argumenten worden doorgegeven als een woordenboek en deze argumenten vormen een woordenboek binnen de functie met dezelfde naam als de parameter exclusief dubbele asterisk **.

Voorbeeld 3: ** kwargs gebruiken om de variabele trefwoordargumenten door te geven aan de functie

 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="johnwood@nomail.com", Country="Wakanda", Age=25, Phone=9876543210)

Wanneer we het bovenstaande programma uitvoeren, is de uitvoer

 Gegevenstype argument: Voornaam is Sita Achternaam is Sharma Leeftijd is 22 Telefoon is 1234567890 Gegevenstype argument: Voornaam is John Achternaam is Wood E-mail is johnwood@nomail.com Land is Wakanda Leeftijd is 25 Telefoon is 9876543210

In het bovenstaande programma hebben we een functie intro()met ** data als parameter. We hebben twee woordenboeken met variabele argumentlengte doorgegeven aan de intro()functie. We hebben een lus-binnenfunctie intro()die werkt op de gegevens van het doorgegeven woordenboek en de waarde van het woordenboek afdrukt.

Dingen om te onthouden:

  • * args en * kwargs zijn speciale sleutelwoorden waarmee de functie een argument van variabele lengte kan aannemen.
  • * args geeft een variabel aantal niet-trefwoord argumentenlijst door en op welke bewerking van de lijst kan worden uitgevoerd.
  • ** kwargs geeft een variabel aantal trefwoordargumenten woordenboek door om te functioneren waarop de bewerking van een woordenboek kan worden uitgevoerd.
  • * args en ** kwargs maken de functie flexibel.

Interessante artikelen...