Der er tre typer argumenter, som en Python-funktion kan acceptere: standard, variabel (*args) og nøgleord (**kwargs). Standardargumenter er de enkleste, men har begrænset funktionalitet. På den anden side gør *args og **kwargs dig i stand til at gøre dine funktioner mere fleksible ved at acceptere et variabelt antal input.

Den type argumentoverførsel, du vælger, afhænger af karakteren af ​​din funktion og din egen foretrukne programmeringsstil.

Grundlæggende funktioner i Python

For at forstå, hvordan de to variable argumenter i Python-funktioner fungerer, er det vigtigt at forstå, hvorfor de eksisterer i første omgang. En simpel funktion erklærer et fast antal anonyme argumenter som sådan:

defaddnum(a, b, c):
Vend tilbage a + b + c

Denne funktion fungerer fint, men der er plads til forbedringer. Det største problem er, at det kun håndterer to argumenter, så det kan kun lægge to tal sammen. Hvad hvis du vil tilføje to eller fire tal? Denne funktion vil ikke tillade dig at gøre det. Hvis du sender flere eller færre argumenter, end funktionen accepterer, vil det føre til en TypeError.

instagram viewer

Selvfølgelig kan du oprette flere funktioner for at acceptere forskellige antal argumenter. Men det er ubelejligt og vil slet ikke skalere godt. Du skal også oprette en ny funktion, hver gang du vil håndtere et nyt antal input.

Det er her variable argumenter og søgeordsargumenter kommer ind. Ved hjælp af *args og **kwargs kan du definere fleksible funktioner, der kan tage et variabelt antal input.

Hvad er *args i Python?

Hovedideen bag *args i Python er at give dig mulighed for at sende et variabelt antal input til din funktion. Dette er praktisk i forskellige applikationer. Tænk for eksempel på et regneprogram, hvor du vil give brugeren mulighed for at tilføje to eller flere tal og returnere summen.

Bemærk at args kun er et variabelnavn; det er *, der er vigtigt. Du kan bruge et hvilket som helst gyldigt navn til dit variabelargument, så længe du inkluderer *.

Sådan bruges *args

Du kan ændre addnum-funktionen til at tage et variabelt antal input som følger:

defaddnum(*args):
i alt = 0

til num i args:
total = total + antal

Vend tilbage i alt

Kodestykket ovenfor bruger en for loop at iterere gennem de medfølgende indgange.

Du kan derefter kalde addnum-funktionen med variable argumenter, og den vil fungere uden at kaste en fejl:

Print(tilføj nummer(10, 1, 12, 12, 4, 54, 5)) ## returnerer 98
Print(tilføj nummer(14, 54, 5)) # returnerer 73
Print(tilføj nummer(10, 5)) # returnerer 15

Hvad er **kwargs i Python?

Mens både *args og **kwargs tillader os at sende et variabelt antal input til funktioner, er sidstnævnte specifik for søgeordsargumenter. Hvis du ikke ved det, er søgeordsargumenter bare smarte navne for argumenter med et navn.

En anden unik ting ved **kwargs er, at Python repræsenterer værdien som en ordbog.

Sådan bruges **kwargs

Ligesom *args er dobbeltstjernen den vigtige bit; du kan bruge et hvilket som helst ord som parameternavn. Her er et eksempel på, hvordan man bruger **kwargs i Python:

defugentlig_deltagelse(**hverdage):
total_deltagere = 0

tildeltagereihverdage.værdier():
total_deltagere = total_deltagere + deltagere

Vend tilbage total_deltagere

Print(ugentlig_deltagelse (mandag = 265, tirsdag = 698, onsdag = 365, torsdag = 463, fredag ​​= 234)) # returnerer 2025
Print(ugentlig_deltagelse (mandag = 265, fredag ​​= 234)) # returnerer 499
Print(ugentlig_deltagelse (onsdag = 365, torsdag = 463, fredag ​​= 234)) # returnerer 1062

Kodestykket ovenfor bruger også en for-løkke, men denne gang med Pythons indbyggede værdier()-metode. Denne metode returnerer et visningsobjekt med alle værdierne i ordbogen. Metoden values() giver dig mulighed for sløjfe gennem en Python-ordbog uden besvær.

Brug variable argumenter til at gøre dine Python-funktioner fleksible

Funktionsargumenter er praktiske, men nogle funktioner kan med fordel acceptere et variabelt antal argumenter. Navngivne søgeordsargumenter kan gøre din kode mere læsbar og nemmere at bruge. Du bør omfavne Pythons *args og **kwargs argumenter. De er ret enkle at bruge, og med dem kan du gøre dine funktioner og programmer mere fleksible.

Ved at følge trinene og kodestykkerne ovenfor håber vi, at du nu kan bruge variable søgeords- og ikke-søgeordsargumenter til dine funktioner.