Python * args i ** kwargs (s primjerima)

U ovom ćemo članku s primjerima naučiti o Python * args i ** kwargs, njihovoj upotrebi i funkcijama.

U programiranju definiramo funkciju za izradu koda za ponovnu upotrebu koji izvodi slične operacije. Da bismo izveli tu operaciju, pozivamo funkciju s određenom vrijednošću, koja se u Pythonu naziva argumentom funkcije.

Preporučili bismo vam da pročitate argumente funkcije Python i Python funkcije.

Pretpostavimo da definiramo funkciju za zbrajanje 3 broja.

Primjer 1: Funkcija dodavanja 3 broja

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

Kada pokrenemo gornji program, izlaz će biti

 zbroj: 35

U gornjem programu imamo adder()funkciju s tri argumenta x, y i z. Kad proslijedimo tri vrijednosti dok pozivamo adder()funkciju, kao izlaz dobivamo zbroj 3 broja.

Pogledajmo što se događa kada u adder()funkciji proslijedimo više od 3 argumenta .

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

Kada pokrenemo gornji program, izlaz će biti

 TypeError: adder () uzima 3 pozicijska argumenta, ali je dato 5

U gornjem programu smo adder()funkciji proslijedili 5 argumenata umjesto 3 argumenta zbog kojih smo dobili TypeError.

Uvod u * args i ** kwargs u Pythonu

U Pythonu funkciju pomoću posebnih simbola možemo proslijediti promjenjivi broj argumenata. Dva su posebna simbola:

  1. * argumenti (ne argumenti ključnih riječi)
  2. ** kwargs (argumenti ključnih riječi)

* Args i ** kwargs koristimo kao argument kada nismo sigurni u broj argumenata koji će se proslijediti u funkcijama.

Python * argumenti

Kao u gornjem primjeru, nismo sigurni u broj argumenata koji se mogu proslijediti funkciji. Python ima * args koji nam omogućuju prosljeđivanje varijabilnog broja argumenata koji nisu ključne riječi kako bi funkcionirali.

U funkciji bismo trebali koristiti zvjezdicu *prije imena parametra za prosljeđivanje argumenata promjenjive duljine. Argumenti se prosljeđuju kao skup i ti prosljeđeni argumenti čine koru unutar funkcije s istim imenom kao parametar isključujući zvjezdicu *.

Primjer 2: Korištenje * args za prosljeđivanje argumenata promjenjive duljine funkciji

 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)

Kada pokrenemo gornji program, izlaz će biti

 Zbir: 8 Zbir: 22 Zbir: 17

U gore navedenom programu koristili smo * num kao parametar koji nam omogućuje da adder()funkciji proslijedimo popis argumenata promjenjive duljine . Unutar funkcije imamo petlju koja dodaje proslijeđeni argument i ispisuje rezultat. Kao argument funkciji proslijedili smo 3 različita korpusa s promjenjivom duljinom.

Python ** kwargs

Python prenosi argument ne-ključne riječi promjenjive duljine u funkciju pomoću * args, ali ne možemo to koristiti za prosljeđivanje argumenta ključne riječi. Za ovaj problem Python je dobio rješenje nazvano ** kwargs, koje nam omogućuje da funkciji proslijedimo varijabilnu duljinu argumenata ključne riječi.

U funkciji koristimo dvostruku zvjezdicu **ispred naziva parametra za označavanje ove vrste argumenata. Argumenti se prosljeđuju kao rječnik i ti argumenti čine rječnik unutar funkcije s imenom istim kao parametar isključujući dvostruku zvjezdicu **.

Primjer 3: Korištenje ** kwargs za prosljeđivanje argumenata ključne riječi varijable funkciji

 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)

Kada pokrenemo gornji program, izlaz će biti

 Tip podataka argument: Ime je Sita Prezime je Sharma Dob je 22 Telefon je 1234567890 Tip podataka argument: Ime je John Prezime je Wood Adresa e-pošte je [email protected] Zemlja je Wakanda Dob je 25 Telefon je 9876543210

U gore navedenom programu imamo funkciju intro()s ** podacima kao parametrom. Funkciji smo proslijedili dva rječnika s promjenjivom duljinom argumenta intro(). Imamo intro()funkciju for loop inside koja radi na podacima proslijeđenog rječnika i ispisuje vrijednost rječnika.

Stvari koje treba zapamtiti:

  • * args i * kwargs su posebna ključna riječ koja omogućuje funkciji da uzima argument promjenjive duljine.
  • * args prenosi promjenjivi broj argumenata bez ključnih riječi i na kojima se može izvršiti operacija popisa.
  • ** kwargs prosljeđuje varijabilni broj rječnika argumenata ključnih riječi kako bi funkcionirao na kojem se može izvršiti rad rječnika.
  • * args i ** kwargs čine funkciju fleksibilnom.

Zanimljivi članci...