Python * args in ** kwargs (z primeri)

V tem članku bomo s primeri spoznali Python * args in ** kwargs, njihovo uporabo in funkcije.

Pri programiranju definiramo funkcijo za izdelavo kode za večkratno uporabo, ki izvaja podobno operacijo. Za izvedbo te operacije pokličemo funkcijo s posebno vrednostjo, ki se v Pythonu imenuje argument funkcije.

Priporočamo vam, da preberete Python Function in Python Function Arguments.

Recimo, da določimo funkcijo za seštevanje 3 števil.

Primer 1: Funkcija dodajanja 3 številk

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

Ko zaženemo zgornji program, bo rezultat

 vsota: 35

V zgornjem programu imamo adder()funkcijo s tremi argumenti x, y in z. Ko med klicanjem adder()funkcije prenesemo tri vrednosti , dobimo kot izhod vsoto treh števil.

Oglejmo si, kaj se zgodi, ko v adder()funkcijo prenesemo več kot 3 argumente .

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

Ko zaženemo zgornji program, bo rezultat

 TypeError: adder () zavzame 3 položajne argumente, podanih pa je bilo 5

V zgornjem programu smo adder()funkciji namesto 3 argumentov, zaradi katerih smo dobili , poslali 5 argumentov TypeError.

Uvod v * args in ** kwargs v Pythonu

V Pythonu lahko s posebnimi simboli funkciji posredujemo spremenljivo število argumentov. Obstajata dva posebna simbola:

  1. * argumenti (argumenti brez ključnih besed)
  2. ** kwargs (argumenti ključnih besed)

Kot argumente uporabljamo * args in ** kwargs, kadar nismo prepričani o številu argumentov, ki naj jih posredujemo v funkcijah.

Python * argumenti

Kot v zgornjem primeru nismo prepričani o številu argumentov, ki jih je mogoče posredovati funkciji. Python ima * args, ki nam omogočajo, da spremenljivemu številu ne-ključnih argumentov posredujemo v funkcijo.

V funkciji bi morali *pred imenom parametra uporabiti zvezdico, da posredujemo argumente s spremenljivo dolžino. Argumenti se posredujejo kot sklop in ti posredovani argumenti naredijo funkcijo znotraj istega imena kot parameter, ki izključuje zvezdico *.

Primer 2: Uporaba * args za posredovanje argumentov spremenljive dolžine 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)

Ko zaženemo zgornji program, bo rezultat

 Vsota: 8 Vsota: 22 Vsota: 17

V zgornjem programu smo uporabili * num kot parameter, ki nam omogoča, da adder()funkciji posredujemo seznam argumentov s spremenljivo dolžino . Znotraj funkcije imamo zanko, ki doda posredovani argument in natisne rezultat. Kot argument v funkcijo smo poslali 3 različne komplete s spremenljivo dolžino.

Python ** kwargs

Python posreduje argument nebesedne besede spremenljive dolžine funkciji z uporabo * args, vendar tega ne moremo uporabiti za posredovanje argumenta ključne besede. Za to težavo ima Python rešitev, imenovano ** kwargs, ki nam omogoča, da funkciji posredujemo spremenljivo dolžino argumentov ključnih besed.

V funkciji **za označevanje te vrste argumenta pred imenom parametra uporabljamo dvojno zvezdico . Argumenti se posredujejo kot slovar in ti argumenti naredijo slovar znotraj funkcije z imenom, enakim parametru, razen dvojne zvezdice **.

Primer 3: Uporaba ** kwargs za posredovanje argumentov ključnih besed spremenljivke v funkcijo

 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)

Ko zaženemo zgornji program, bo rezultat

 Podatkovna vrsta argumenta: Ime je Sita Priimek je Sharma Starost je 22 Telefon je 1234567890 Podatkovna vrsta argumenta: Ime je John Priimek je Wood E-pošta je [email protected] Država je Wakanda Starost je 25 Telefon je 9876543210

V zgornjem programu imamo funkcijo intro()z ** podatki kot parametrom. Funkciji smo predali dva slovarja s spremenljivo dolžino argumenta intro(). Imamo intro()funkcijo za zanko znotraj, ki deluje na podatke predanega slovarja in natisne vrednost slovarja.

Stvari, ki jih je treba zapomniti:

  • * args in * kwargs so posebna ključna beseda, ki omogoča funkciji, da sprejme argument spremenljive dolžine.
  • * args posreduje spremenljivo število seznama argumentov brez ključnih besed in na katerem delu seznama je mogoče izvesti.
  • ** kwargs posreduje spremenljivo število slovarjev argumentov ključnih besed, da deluje, na katerem je mogoče izvajati delovanje slovarja.
  • * args in ** kwargs naredijo funkcijo prilagodljivo.

Zanimive Članki...