Python funkcija gali priimti trijų tipų argumentus: standartinį, kintamąjį (*args) ir raktinį žodį (**kwargs). Standartiniai argumentai yra patys paprasčiausi, tačiau jų funkcionalumas yra ribotas. Kita vertus, *args ir **kwargs leidžia jums padaryti savo funkcijas lankstesnes, priimant kintamą įvesties skaičių.
Pasirinktas argumentų perdavimo tipas priklauso nuo jūsų funkcijos pobūdžio ir jūsų pasirinkto programavimo stiliaus.
Pagrindinės Python funkcijos
Norint suprasti, kaip veikia du kintamieji argumentai Python funkcijose, būtina suprasti, kodėl jie apskritai egzistuoja. Paprasta funkcija deklaruoja fiksuotą skaičių anoniminių argumentų, pavyzdžiui:
defaddnum(a, b, c):
grąžinti a + b + c
Ši funkcija veikia gerai, tačiau yra kur tobulėti. Didžiausia problema yra ta, kad ji apdoroja tik du argumentus, todėl gali sudaryti tik du skaičius. Ką daryti, jei norite pridėti du ar keturis skaičius? Ši funkcija neleis jums to padaryti. Perdavus daugiau ar mažiau argumentų, nei priima funkcija, bus rodoma tipo klaida.
Žinoma, galite sukurti daugiau funkcijų, kad priimtumėte skirtingą argumentų skaičių. Bet tai nepatogu ir visai netinka. Taip pat turėsite sukurti naują funkciją kiekvieną kartą, kai norėsite apdoroti naują įvesties skaičių.
Čia atsiranda kintamųjų argumentų ir raktinių žodžių argumentai. Naudodami *args ir **kwargs galite apibrėžti lanksčias funkcijas, kurios gali turėti kintamą įvesties skaičių.
Kas yra *args Python?
Pagrindinė „Python“ *args idėja yra leisti jūsų funkcijai perduoti kintamą įvesties skaičių. Tai praverčia įvairiose programose. Pavyzdžiui, pagalvokite apie skaičiuoklės programą, kurioje norite suteikti vartotojui galimybę pridėti du ar daugiau skaičių ir grąžinti sumą.
Atkreipkite dėmesį, kad args yra tik kintamojo pavadinimas; svarbiausias yra *. Galite naudoti bet kokį tinkamą kintamojo argumento pavadinimą, jei įtrauksite *.
Kaip naudoti *args
Galite modifikuoti funkciją addnum, kad gautumėte kintamą įvesties skaičių, kaip nurodyta toliau.
defaddnum(*args):
iš viso = 0dėl nr in args:
iš viso = bendras + skaičius
grąžinti viso
Kodo fragmentas aukščiau naudoja for kilpą kartoti per pateiktas įvestis.
Tada galite iškviesti funkciją addnum su kintamaisiais argumentais ir ji veiks be klaidos:
spausdinti(addnum(10, 1, 12, 12, 4, 54, 5)) ## grąžina 98
spausdinti(addnum(14, 54, 5)) # grąžina 73
spausdinti(addnum(10, 5)) # grąžina 15
Kas yra ** kwargs Python?
Nors ir *args, ir **kwargs leidžia funkcijoms perduoti kintamą įvesties skaičių, pastaroji yra būdinga raktinių žodžių argumentams. Jei nežinote, raktinių žodžių argumentai yra tik išgalvoti argumentų su pavadinimu pavadinimai.
Kitas unikalus **kwargs dalykas yra tai, kad Python reiškia vertę kaip žodyną.
Kaip naudoti **kwargs
Kaip ir *args, dviguba žvaigždutė yra svarbi dalis; kaip parametro pavadinimą galite naudoti bet kurį žodį. Štai pavyzdys, kaip naudoti **kwargs Python:
defsavaitinis_lankomumas(**darbo dienomis):
bendras_dalyvių skaičius = 0dėldalyviųindarbo dienomis.vertybes():
total_attendees = iš viso_dalyvių + dalyviųgrąžinti iš viso_dalyvių
spausdinti(savaitinis_lankymas (pirmadienis = 265, antradienis = 698, trečiadienis = 365, ketvirtadienis = 463, penktadienis = 234)) # grąžina 2025 m
spausdinti(savaitinis_lankymas (pirmadienis = 265, penktadienis = 234)) # grąžina 499
spausdinti(savaitinis_lankymas (trečiadienis = 365, ketvirtadienis = 463, penktadienis = 234)) # grąžina 1062
Aukščiau pateiktame kodo fragmente taip pat naudojamas ciklas for, tačiau šį kartą su Python įtaisytomis reikšmėmis() metodu. Šis metodas grąžina visų žodyno reikšmių peržiūros objektą. Value() metodas leidžia kilpa per Python žodyną be vargo.
Naudokite kintamus argumentus, kad Python funkcijos taptų lanksčios
Funkcijų argumentai yra patogūs, tačiau kai kurioms funkcijoms gali būti naudinga priimti kintamą argumentų skaičių. Vardiniai raktinių žodžių argumentai gali padaryti jūsų kodą skaitomesnį ir lengviau naudojamą. Turėtumėte priimti Python *args ir **kwargs argumentus. Juos gana paprasta naudoti, o su jais galite padaryti savo funkcijas ir programas lankstesnius.
Atlikdami aukščiau nurodytus veiksmus ir kodo fragmentus, tikimės, kad dabar savo funkcijoms galėsite naudoti kintamus raktinio žodžio ir ne raktinio žodžio argumentus.