Obstajajo tri vrste argumentov, ki jih funkcija Python lahko sprejme: standardni, spremenljivka (*args) in ključna beseda (**kwargs). Standardni argumenti so najpreprostejši, vendar imajo omejeno funkcionalnost. Po drugi strani pa *args in **kwargs omogočata, da svoje funkcije naredite bolj prilagodljive, tako da sprejmete spremenljivo število vhodov.
Vrsta posredovanja argumentov, ki jo izberete, je odvisna od narave vaše funkcije in vašega želenega stila programiranja.
Osnovne funkcije v Pythonu
Da bi razumeli, kako delujeta dva spremenljiva argumenta v funkcijah Python, je bistveno razumeti, zakaj sploh obstajata. Preprosta funkcija razglasi določeno število anonimnih argumentov, kot je ta:
defdodatek(a, b, c):
vrnitev a + b + c
Ta funkcija deluje dobro, vendar je prostora za izboljšave. Največja težava je, da obravnava samo dva argumenta, tako da lahko sešteje samo dve številki. Kaj pa, če želite dodati dve ali štiri številke? Ta funkcija vam tega ne omogoča. Če prenesete več ali manj argumentov, kot jih sprejme funkcija, bo prišlo do TypeError.
Seveda bi lahko ustvarili več funkcij, ki bodo sprejele različno število argumentov. Toda to je neprijetno in sploh ne bo dobro razporejeno. Prav tako boste morali ustvariti novo funkcijo vsakič, ko boste želeli obdelati novo število vhodov.
Tu pridejo na vrsto spremenljivi argumenti in argumenti ključnih besed. Z uporabo *args in **kwargs lahko definirate prilagodljive funkcije, ki lahko sprejmejo spremenljivo število vhodov.
Kaj je *args v Pythonu?
Glavna ideja *args v Pythonu je omogočiti, da vaši funkciji posredujete spremenljivo število vhodov. To pride prav v različnih aplikacijah. Omislite si na primer program za kalkulator, kjer želite uporabniku omogočiti, da sešteje dve ali več številk in vrne vsoto.
Upoštevajte, da je args samo ime spremenljivke; pomembno je *. Za argument spremenljivke lahko uporabite katero koli veljavno ime, če vključite *.
Kako uporabljati *args
Funkcijo addnum lahko spremenite tako, da sprejme spremenljivo število vhodov, kot sledi:
defdodatek(*args):
skupaj = 0za št v argumenti:
skupaj = skupaj + št
vrnitev skupaj
Zgornji delček kode uporablja zanko for za ponavljanje po dobavljenih vhodih.
Nato lahko pokličete funkcijo addnum s spremenljivimi argumenti in bo delovala brez napake:
natisniti(dodatek(10, 1, 12, 12, 4, 54, 5)) ## vrne 98
natisniti(dodatek(14, 54, 5)) # vrne 73
natisniti(dodatek(10, 5)) # vrne 15
Kaj je **kwargs v Pythonu?
Medtem ko nam tako *args kot **kwargs omogočata posredovanje spremenljivega števila vhodov funkcijam, je slednja specifična za argumente ključnih besed. Če ne veste, so argumenti ključnih besed le modna imena za argumente z imenom.
Druga edinstvena stvar pri **kwargs je, da Python predstavlja vrednost kot slovar.
Kako uporabljati **kwargs
Tako kot *args je dvojna zvezdica pomemben del; kot ime parametra lahko uporabite katero koli besedo. Tukaj je primer uporabe **kwargs v Pythonu:
deftedenska_udeležba(**delavniki):
skupno_udeležencev = 0zaudeležencivdelavniki.vrednote():
skupno_udeležencev = skupno_udeležencev + udeležencevvrnitev skupno_udeležencev
natisniti(tedenska_udeležba (ponedeljek = 265, torek = 698, sreda = 365, četrtek = 463, petek = 234)) # vrnitev 2025
natisniti(tedenska_udeležba (ponedeljek = 265, petek = 234)) # vrne 499
natisniti(tedenska_udeležba (sreda = 365, četrtek = 463, petek = 234)) # vrne 1062
Zgornji delček kode uporablja tudi zanko for, vendar tokrat s Pythonovo vgrajeno metodo values(). Ta metoda vrne objekt pogleda vseh vrednosti v slovarju. Metoda values() vam omogoča zanke skozi slovar Python brez težav.
Uporabite spremenljive argumente, da bodo vaše funkcije Python prilagodljive
Argumenti funkcije so priročni, vendar imajo nekatere funkcije lahko koristi od sprejemanja spremenljivega števila argumentov. Poimenovani argumenti ključnih besed lahko naredijo vašo kodo bolj berljivo in enostavnejšo za uporabo. Sprejeti morate Pythonove argumente *args in **kwargs. So precej preprosti za uporabo in z njimi lahko naredite svoje funkcije in programe bolj prilagodljive.
Če sledite zgornjim korakom in odrezkom kode, upamo, da lahko zdaj za svoje funkcije uporabljate spremenljive argumente ključnih besed in argumente, ki niso ključni.