Python funkcija var pieņemt trīs veidu argumentus: standarta, mainīgo (*args) un atslēgvārdu (**kwargs). Standarta argumenti ir vienkāršākie, taču tiem ir ierobežota funkcionalitāte. No otras puses, *args un **kwargs ļauj padarīt savas funkcijas elastīgākas, pieņemot mainīgu skaitu ievades.
Jūsu izvēlētais argumentu nodošanas veids ir atkarīgs no jūsu funkcijas veida un jūsu izvēlētā programmēšanas stila.
Python pamatfunkcijas
Lai saprastu, kā darbojas divi mainīgo argumenti Python funkcijās, ir svarīgi saprast, kāpēc tie vispār pastāv. Vienkārša funkcija deklarē noteiktu skaitu anonīmu argumentu, piemēram:
defpapildinājums(a, b, c):
atgriezties a + b + c
Šī funkcija darbojas labi, taču ir vēl ko uzlabot. Lielākā problēma ir tā, ka tas apstrādā tikai divus argumentus, tāpēc tas var saskaitīt tikai divus skaitļus. Ko darīt, ja vēlaties pievienot divus vai četrus skaitļus? Šī funkcija neļaus jums to izdarīt. Nododot vairāk vai mazāk argumentu, nekā funkcija pieņem, tiks parādīta tipa kļūda.
Protams, jūs varētu izveidot vairāk funkciju, lai pieņemtu dažādu skaitu argumentu. Bet tas ir neērti un vispār nedarbosies labi. Jums būs arī jāizveido jauna funkcija katru reizi, kad vēlaties apstrādāt jaunu ievades skaitu.
Šeit tiek izmantoti mainīgie argumenti un atslēgvārdu argumenti. Izmantojot *args un **kwargs, varat definēt elastīgas funkcijas, kurām var būt atšķirīgs ievades skaits.
Kas ir *args programmā Python?
Python *args galvenā ideja ir ļaut savai funkcijai nodot mainīgu skaitu ievades. Tas noder dažādās lietojumprogrammās. Piemēram, padomājiet par kalkulatora programmu, kurā vēlaties dot lietotājam iespēju pievienot divus vai vairākus skaitļus un atgriezt summu.
Ņemiet vērā, ka args ir tikai mainīgā nosaukums; tas ir *, kas ir svarīgi. Mainīgā argumentam varat izmantot jebkuru derīgu nosaukumu, ja vien iekļaujat *.
Kā lietot *args
Varat modificēt addnum funkciju, lai iegūtu mainīgu skaitu ievades, kā norādīts tālāk.
defpapildinājums(*args):
kopā = 0priekš num iekšā args:
kopā = kopā + skaits
atgriezties Kopā
Iepriekš norādītais koda fragments izmanto for cilpu lai atkārtotu, izmantojot piegādātās ievades.
Pēc tam varat izsaukt funkciju addnum ar mainīgiem argumentiem, un tā darbosies bez kļūdas:
drukāt(addnum(10, 1, 12, 12, 4, 54, 5)) ## atgriež 98
drukāt(addnum(14, 54, 5)) # atgriež 73
drukāt(addnum(10, 5)) # atgriež 15
Kas ir ** kwargs Python?
Lai gan gan *args, gan **kwargs ļauj funkcijām nodot mainīgu skaitu ievades, pēdējais ir raksturīgs atslēgvārdu argumentiem. Ja nezināt, atslēgvārdu argumenti ir tikai izdomāti nosaukumi argumentiem ar nosaukumu.
Vēl viena unikāla lieta **kwargs ir tā, ka Python attēlo vērtību kā vārdnīcu.
Kā lietot **kwargs
Tāpat kā *args, dubultā zvaigznīte ir svarīga; kā parametra nosaukumu varat izmantot jebkuru vārdu. Šeit ir piemērs, kā Python lietotnē **kwargs:
defiknedēļas_apmeklējums(**nedēļas dienas):
kopējais_dalībnieku skaits = 0priekšapmeklētājiemiekšānedēļas dienas.vērtības():
total_attendees = kopējais_dalībnieku skaits + apmeklētājiatgriezties kopējais_dalībnieku skaits
drukāt(nedēļas_apmeklējums (pirmdiena = 265, otrdiena = 698, trešdiena = 365, ceturtdiena = 463, piektdiena = 234)) # atgriežas 2025. gadā
drukāt(nedēļas_apmeklējums (pirmdiena = 265, piektdiena = 234)) # atgriež 499
drukāt(nedēļas_apmeklējums (trešdiena = 365, ceturtdiena = 463, piektdiena = 234)) # atgriež 1062
Iepriekš minētajā koda fragmentā tiek izmantota arī for cilpa, taču šoreiz ar Python iebūvēto vērtību () metodi. Šī metode atgriež visu vārdnīcas vērtību skata objektu. Value() metode ļauj jums cilpa caur Python vārdnīcu bez apgrūtinājumiem.
Izmantojiet mainīgus argumentus, lai padarītu savas Python funkcijas elastīgas
Funkciju argumenti ir ērti, taču dažas funkcijas var gūt labumu no mainīga argumentu skaita pieņemšanas. Nosauktie atslēgvārdu argumenti var padarīt jūsu kodu lasāmāku un vieglāk lietojamu. Jums vajadzētu izmantot Python argumentus *args un **kwargs. Tās ir diezgan vienkārši lietojamas, un ar tām jūs varat padarīt savas funkcijas un programmas elastīgākas.
Veicot iepriekš norādītās darbības un koda fragmentus, mēs ceram, ka tagad savām funkcijām varat izmantot mainīgus atslēgvārdus un argumentus, kas nav atslēgvārdi.