Python * args ja ** kwargs (koos näidetega)

Selles artiklis tutvume näidetega Pythoni * argide ja ** kwargide, nende kasutamise ja funktsioonide kohta.

Programmeerimisel määratleme funktsiooni taaskasutatava koodi valmistamiseks, mis täidab sarnast toimingut. Selle toimingu tegemiseks kutsume funktsiooni kindla väärtusega, seda väärtust nimetatakse Pythonis funktsiooni argumendiks.

Soovitame teil lugeda Pythoni funktsiooni ja Pythoni funktsiooni argumente.

Oletame, et määratleme funktsiooni 3 numbri lisamiseks.

Näide 1: funktsioon 3 numbri lisamiseks

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

Kui käivitame ülaltoodud programmi, on väljund

 summa: 35

Ülalolevas programmis on meil adder()funktsioon kolme argumendiga x, y ja z. Kui edastame adder()funktsiooni kutsudes kolm väärtust , saame väljundiks 3 numbri summa.

Vaatame, mis juhtub, kui edastame adder()funktsioonis rohkem kui 3 argumenti .

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

Kui käivitame ülaltoodud programmi, on väljund

 TypeError: lisaja () võtab 3 positsioonilist argumenti, kuid 5 anti

Ülaltoodud programmis edastasime adder()funktsioonile 5 argumenti 3 argumendi asemel, mille tõttu saime TypeError.

* Argsi ja ** kwargsi sissejuhatus Pythonis

Pythonis saame spetsiaalsete sümbolite abil anda funktsioonile muutuva arvu argumente. On kaks erisümbolit:

  1. * args (mitte märksõna argumendid)
  2. ** kwargs (märksõna argumendid)

Kui pole kindel funktsioonides edastatavate argumentide arv, kasutame argumentidena * args ja ** kwargs.

Python * vaidleb vastu

Nagu ülaltoodud näites, pole me kindel funktsioonile edastatavate argumentide arvu osas. Pythonil on * arg-id, mis võimaldavad meil toimida muutuvate arvude märksõnadeta argumentide arv.

Funktsioonis peaksime *muutuja pikkusega argumentide edastamiseks kasutama tärnit parameetri nime ees. Argumendid edastatakse dupleksina ja need läbinud argumendid muudavad funktsiooni sees kahekordse nime, kui parameeter, välja arvatud tärn *.

Näide 2: muutuja pikkusega argumentide edastamiseks funktsioonile * argsi kasutamine

 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)

Kui käivitame ülaltoodud programmi, on väljund

 Summa: 8 Summa: 22 Summa: 17

Ülaltoodud programmis kasutasime parameetrina * num, mis võimaldab meil muuta adder()funktsiooni muutuva pikkusega argumentide loendi . Funktsiooni sees on meil silmus, mis lisab läbitud argumendi ja prindib tulemuse. Edastasime funktsiooni argumendina 3 erinevat muutuva pikkusega rida.

Python ** kwargs

Python edastab muutumatu pikkusega mitte märksõna argumendi toimimiseks * argsi abil, kuid me ei saa seda kasutada märksõna argumendi edastamiseks. Selle probleemi jaoks on Python saanud lahenduse nimega ** kwargs, mis võimaldab meil anda märksõnade argumentide muutuva pikkusega funktsiooni.

Funktsioonis kasutame **seda tüüpi argumentide tähistamiseks parameetri nime ees topelttärni . Argumendid edastatakse sõnaraamatuna ja need argumendid muudavad sõnasisese funktsiooni nimega sama mis parameeter välistab topelttärni **.

Näide 3: ** kwargsi kasutamine muutuja märksõna argumentide edastamiseks funktsioonile

 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)

Kui käivitame ülaltoodud programmi, on väljund

 Argumendi andmetüüp: Eesnimi on Sita Perekonnanimi on Sharma Vanus on 22 Telefon on 1234567890 Argumendi andmetüüp: Eesnimi on John Perekonnanimi on Wood E-posti aadress on [email protected] Riik on Wakanda Vanus on 25 Telefon on 9876543210

Ülaltoodud programmis on meil funktsioon intro(), mille parameetriks on ** andmed. Edastasime funktsioonile kaks muutuva argumendipikkusega sõnastikku intro(). Meil on silmus sees intro()funktsioon, mis töötab läbitud sõnaraamatu andmetega ja prindib sõnastiku väärtuse.

Mida meeles pidada:

  • * args ja * kwargs on spetsiaalne märksõna, mis võimaldab funktsioonil võtta muutuva pikkusega argumendi.
  • * args edastab muutumatu arvu märksõnadeta argumentide loendi ja millist loendi toimingut saab teha.
  • ** kwargs edastab muutuva arvu märksõnade argumentide sõnastiku, et toimida, millises sõnaraamatu operatsioonis saab toimida.
  • * args ja ** kwargs muudavad funktsiooni paindlikuks.

Huvitavad Artiklid...