Det er tre typer argumenter som en Python-funksjon kan akseptere: standard, variabel (*args) og nøkkelord (**kwargs). Standardargumenter er de enkleste, men har begrenset funksjonalitet. På den annen side lar *args og **kwargs deg gjøre funksjonene dine mer fleksible ved å akseptere et variabelt antall innganger.

Hvilken type argumentoverføring du velger, avhenger av funksjonen din og din egen foretrukne programmeringsstil.

Grunnleggende funksjoner i Python

For å forstå hvordan de to variable argumentene i Python-funksjonene fungerer, er det viktig å forstå hvorfor de eksisterer i utgangspunktet. En enkel funksjon erklærer et fast antall anonyme argumenter slik:

defaddnum(a, b, c):
komme tilbake a + b + c

Denne funksjonen fungerer fint, men det er rom for forbedringer. Det største problemet er at det bare håndterer to argumenter, så det kan bare legge sammen to tall. Hva om du vil legge til to eller fire tall? Denne funksjonen lar deg ikke gjøre det. Hvis du sender flere eller færre argumenter enn funksjonen godtar, vil det føre til en TypeError.

instagram viewer

Selvfølgelig kan du lage flere funksjoner for å akseptere forskjellige antall argumenter. Men det er upraktisk og vil ikke skalere godt i det hele tatt. Du må også opprette en ny funksjon hver gang du vil håndtere et nytt antall inndata.

Det er her variable argumenter og søkeordargumenter kommer inn. Ved å bruke *args og **kwargs kan du definere fleksible funksjoner som kan ta et variabelt antall innganger.

Hva er *args i Python?

Hovedideen bak *args i Python er å la deg sende et variabelt antall innganger til funksjonen din. Dette kommer godt med i ulike applikasjoner. Tenk for eksempel på et kalkulatorprogram der du vil gi brukeren mulighet til å legge til to eller flere tall og returnere summen.

Merk at args bare er et variabelnavn; det er * som er viktig. Du kan bruke et hvilket som helst gyldig navn for variabelargumentet ditt, så lenge du inkluderer *.

Hvordan bruke *args

Du kan endre addnum-funksjonen for å ta et variabelt antall innganger som følger:

defaddnum(*args):
totalt = 0

til num i args:
totalt = totalt + antall

komme tilbake Total

Kodebiten ovenfor bruker en for loop å iterere gjennom de medfølgende inngangene.

Du kan deretter kalle addnum-funksjonen med variable argumenter, og den vil fungere uten å kaste en feil:

skrive ut(legg til(10, 1, 12, 12, 4, 54, 5)) ## returnerer 98
skrive ut(legg til(14, 54, 5)) # returnerer 73
skrive ut(legg til(10, 5)) # returnerer 15

Hva er **kwargs i Python?

Mens både *args og **kwargs lar oss sende et variabelt antall inndata til funksjoner, er sistnevnte spesifikk for søkeordargumenter. I tilfelle du ikke vet, er søkeordargumenter bare fancy navn på argumenter med et navn.

En annen unik ting med **kwargs er at Python representerer verdien som en ordbok.

Slik bruker du **kwargs

Som *args er dobbelstjernen den viktige biten; du kan bruke et hvilket som helst ord som parameternavn. Her er et eksempel på hvordan du bruker **kwargs i Python:

defukentlig_oppmøte(**ukedager):
totalt_deltakere = 0

tildeltakereiukedager.verdier():
totalt_deltakere = totalt_deltakere + deltakere

komme tilbake totalt_deltakere

skrive ut(ukentlig_oppmøte (mandag = 265, tirsdag = 698, onsdag = 365, torsdag = 463, fredag ​​= 234)) # returnerer 2025
skrive ut(ukentlig_oppmøte (mandag = 265, fredag ​​= 234)) # returnerer 499
skrive ut(ukentlig_oppmøte (onsdag = 365, torsdag = 463, fredag ​​= 234)) # returnerer 1062

Kodebiten ovenfor bruker også en for-løkke, men denne gangen med Pythons innebygde verdier()-metode. Denne metoden returnerer et visningsobjekt med alle verdiene i ordboken. Verdiene()-metoden lar deg gå gjennom en Python-ordbok uten problemer.

Bruk variable argumenter for å gjøre Python-funksjonene fleksible

Funksjonsargumenter er nyttige, men noen funksjoner kan ha nytte av å godta et variabelt antall argumenter. Navngitte søkeordargumenter kan gjøre koden din mer lesbar og enklere å bruke. Du bør omfavne Pythons *args og **kwargs-argumenter. De er ganske enkle å bruke, og med dem kan du gjøre funksjonene og programmene mer fleksible.

Ved å følge trinnene og kodebitene ovenfor, håper vi at du nå kan bruke variable søkeord og ikke-søkeordargumenter for funksjonene dine.