Python * args ir ** kwargs (su pavyzdžiais)

Šiame straipsnyje su pavyzdžiais sužinosime apie Python * args ir ** kwargs, jų naudojimą ir funkcijas.

Programuodami mes apibrėžiame funkciją, kad padarytume daugkartinį kodą, kuris atlieka panašią operaciją. Norėdami atlikti šią operaciją, mes iškviečiame funkciją su konkrečia verte, ši reikšmė Python vadinama funkcijos argumentu.

Mes rekomenduotume jums perskaityti „Python Function“ ir „Python Function“ argumentus.

Tarkime, mes apibrėžiame 3 skaičių pridėjimo funkciją.

1 pavyzdys: funkcija pridėti 3 skaičius

 def adder(x,y,z): print("sum:",x+y+z) adder(10,12,13)

Kai vykdysime pirmiau nurodytą programą, bus išvestis

 suma: 35

Aukščiau pateiktoje programoje turime adder()funkciją su trimis argumentais x, y ir z. Kai skambindami adder()funkcijai perduodame tris reikšmes , gauname 3 skaičių sumą kaip išvestį.

Leidžia pamatyti, kas nutinka, kai adder()funkcijoje pateikiame daugiau nei 3 argumentus .

 def adder(x,y,z): print("sum:",x+y+z) adder(5,10,15,20,25)

Kai vykdysime pirmiau nurodytą programą, bus išvestis

 TypeError: adder () užima 3 pozicinius argumentus, bet buvo pateikti 5

Pirmiau pateiktoje programoje adder()funkcijai perdavėme 5 argumentus, o ne 3 argumentus, dėl kurių gavome TypeError.

Įvadas į * args ir ** kwargs Python

„Python“ funkcijoje galime perduoti kintamą argumentų skaičių naudodami specialius simbolius. Yra du specialūs simboliai:

  1. * args (ne raktiniai žodžiai)
  2. ** kwargs (raktinių žodžių argumentai)

Kai nesame tikri dėl argumentų, kuriuos reikia perduoti funkcijose, argumentais naudojame * args ir ** kwargs.

Python * argumentuoja

Kaip ir aukščiau pateiktame pavyzdyje, mes nesame tikri dėl argumentų, kuriuos galima perduoti funkcijai, skaičiaus. „Python“ turi * argumentus, kurie leidžia mums perduoti kintamąjį ne raktinių žodžių argumentų skaičių.

Funkcijoje turėtume naudoti žvaigždutę *prieš parametro pavadinimą, kad perduotumėte kintamo ilgio argumentus. Argumentai perduodami kaip kartotinis, o šie perduoti argumentai funkcijos viduje pakyla tuo pačiu pavadinimu kaip parametras, išskyrus žvaigždutę *.

2 pavyzdys: Naudojant * arg, funkcija perduodama kintamo ilgio argumentus

 def adder(*num): sum = 0 for n in num: sum = sum + n print("Sum:",sum) adder(3,5) adder(4,5,6,7) adder(1,2,3,5,6)

Kai vykdysime pirmiau nurodytą programą, bus išvestis

 Suma: 8 Suma: 22 Suma: 17

Pirmiau pateiktoje programoje mes naudojome * num kaip parametrą, kuris leidžia mums perduoti kintamo ilgio argumentų sąrašą adder()funkcijai. Funkcijos viduje mes turime kilpą, kuri prideda pateiktą argumentą ir atspausdina rezultatą. Funkcijai argumentu perdavėme 3 skirtingus kintamo ilgio rinkinius.

Python ** kwargs

„Python“ perduoda kintamo ilgio be raktinio žodžio argumentą, kad veiktų naudodamas * args, tačiau mes negalime to naudoti norėdami perduoti raktinio žodžio argumentą. Šiai problemai „Python“ turi sprendimą, vadinamą ** kwargs, tai leidžia mums perduoti kintamąjį raktinių žodžių argumentų ilgį funkcijai.

Funkcijoje **prieš parametro pavadinimą naudojame dvigubą žvaigždutę, kad pažymėtume šio tipo argumentus. Argumentai perduodami kaip žodynas, o šie argumentai daro žodyno funkciją viduje su pavadinimu tokiu pačiu parametru, išskyrus dvigubą žvaigždutę **.

3 pavyzdys: ** kwargs naudojimas kintamojo raktinio žodžio argumentams perduoti funkcijai

 def intro(**data): print("Data type of argument:",type(data)) for key, value in data.items(): print("() is ()".format(key,value)) intro(Firstname="Sita", Lastname="Sharma", Age=22, Phone=1234567890) intro(Firstname="John", Lastname="Wood", Email="[email protected]", Country="Wakanda", Age=25, Phone=9876543210)

Kai vykdysime pirmiau nurodytą programą, bus išvestis

 Argumento duomenų tipas: Vardas yra Sita Pavardė yra Sharma Amžius yra 22 Telefonas yra 1234567890 Argumento duomenų tipas: Vardas yra Jonas Pavardė yra Wood El. Paštas [email protected] Šalis yra Wakanda Amžius yra 25 Telefonas yra 9876543210

Pirmiau pateiktoje programoje mes turime funkciją intro()su ** duomenimis kaip parametrą. intro()Funkcijai perdavėme du kintamo argumentų ilgio žodynus . Mes turime „loop inside“ intro()funkciją, kuri veikia perduoto žodyno duomenis ir išspausdina žodyno vertę.

Įsimintini dalykai:

  • * args ir * kwargs yra specialus raktinis žodis, leidžiantis funkcijai pasirinkti kintamo ilgio argumentą.
  • * args perduoda kintamąjį be raktinių žodžių argumentų sąrašo skaičių ir kurį sąrašo operaciją galima atlikti.
  • ** „kwargs“ perduoda kintamą skaičių raktinių žodžių argumentų žodyno, kad veiktų, kurį žodyną galima atlikti.
  • * args ir ** kwargs daro funkciją lanksčią.

Įdomios straipsniai...