Python * args og ** kwargs (med eksempler)

I denne artikkelen vil vi lære om Python * args og ** kwargs, deres bruk og funksjoner med eksempler.

I programmering definerer vi en funksjon for å lage en gjenbrukbar kode som utfører lignende operasjoner. For å utføre den operasjonen, kaller vi en funksjon med den spesifikke verdien, denne verdien kalles et funksjonsargument i Python.

Vi vil anbefale deg å lese Python Function og Python Function Arguments.

Anta at vi definerer en funksjon for tillegg av 3 tall.

Eksempel 1: Funksjon for å legge til 3 tall

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

Når vi kjører programmet ovenfor, vil resultatet være

 sum: 35

I programmet ovenfor har vi adder()funksjon med tre argumenter x, y og z. Når vi passerer tre verdier mens vi ringer til adder()funksjon, får vi summen av de 3 tallene som utdata.

La oss se hva som skjer når vi sender mer enn 3 argumenter i adder()funksjonen.

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

Når vi kjører programmet ovenfor, vil resultatet være

 TypeError: adder () tar 3 posisjonsargumenter, men 5 ble gitt

I programmet ovenfor sendte vi 5 argumenter til adder()funksjonen i stedet for 3 argumenter som vi fikk TypeError.

Introduksjon til * args og ** kwargs i Python

I Python kan vi sende et variabelt antall argumenter til en funksjon ved hjelp av spesielle symboler. Det er to spesielle symboler:

  1. * args (Argumenter for ikke søkeord)
  2. ** kwargs (søkeordargumenter)

Vi bruker * args og ** kwargs som argument når vi er usikre på antall argumenter som skal sendes i funksjonene.

Python * argumenterer

Som i eksemplet ovenfor er vi ikke sikre på antall argumenter som kan overføres til en funksjon. Python har * args som tillater oss å overføre det variable antallet ikke-søkeordargumenter til å fungere.

I funksjonen bør vi bruke en stjerne *før parameternavnet for å sende argumenter med variabel lengde. Argumentene sendes som en tuple, og disse sendte argumentene gjør tuple inne i funksjonen med samme navn som parameteren ekskludert stjerne *.

Eksempel 2: Bruk * args for å overføre argumentene med variabel lengde til funksjonen

 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)

Når vi kjører programmet ovenfor, vil resultatet være

 Sum: 8 Sum: 22 Sum: 17

I det ovennevnte programmet brukte vi * num som en parameter som lar oss sende argumentlisten med variabel lengde til adder()funksjonen. Inne i funksjonen har vi en sløyfe som legger til det passerte argumentet og skriver ut resultatet. Vi passerte 3 forskjellige tupler med variabel lengde som argument for funksjonen.

Python ** kwargs

Python sender ikke-søkeordargument med variabel lengde til å fungere ved hjelp av * args, men vi kan ikke bruke dette til å overføre søkeordargument. For dette problemet har Python en løsning som heter ** kwargs, det lar oss overføre variabel lengde på søkeordargumenter til funksjonen.

I funksjonen bruker vi dobbel stjerne **foran parameternavnet for å betegne denne typen argument. Argumentene sendes som en ordbok, og disse argumentene gjør at en ordbok inne i funksjonen har samme navn som parameteren, unntatt dobbel stjerne **.

Eksempel 3: Bruk ** kwargs til å overføre argumentene for variabel søkeord til funksjonen

 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="[email protected]", Country="Wakanda", Age=25, Phone=9876543210)

Når vi kjører programmet ovenfor, vil resultatet være

 Datatype argument: Fornavn er Sita Etternavn er Sharma Alder er 22 Telefon er 1234567890 Datatype argument: Fornavn er John Etternavn er Tre E-post er [email protected] Land er Wakanda Alder er 25 Telefon er 9876543210

I programmet ovenfor har vi en funksjon intro()med ** data som parameter. Vi passerte to ordbøker med variabel argumentlengde til intro()funksjonen. Vi har for loop inni intro()funksjon som fungerer på dataene til bestått ordbok og skriver ut verdien av ordboken.

Ting å huske:

  • * args og * kwargs er spesielle nøkkelord som lar funksjonen ta argument med variabel lengde.
  • * args passerer variabelt antall ikke-nøkkelord argumenter liste og på hvilken operasjon av listen kan utføres.
  • ** kwargs overfører variabelt antall søkeordargumentordbok for å fungere som operasjonen av en ordbok kan utføres på.
  • * args og ** kwargs gjør funksjonen fleksibel.

Interessante artikler...