Šajā rakstā mēs uzzināsim par Python * args un ** kwargs, to lietošanu un funkcijām ar piemēriem.
Programmējot, mēs definējam funkciju, lai izveidotu atkārtoti lietojamu kodu, kas veic līdzīgu darbību. Lai veiktu šo darbību, mēs izsaucam funkciju ar noteiktu vērtību, šo vērtību Python sauc par funkcijas argumentu.
Mēs iesakām izlasīt Python Function un Python Function Argumentus.
Pieņemsim, ka mēs definējam funkciju 3 skaitļu pievienošanai.
1. piemērs: funkcija, lai pievienotu 3 ciparus
def adder(x,y,z): print("sum:",x+y+z) adder(10,12,13)
Kad mēs palaidīsim iepriekš minēto programmu, izeja būs
summa: 35
Iepriekšējā programmā mums ir adder()
funkcija ar trim argumentiem x, y un z. Kad mēs izlaižam trīs vērtības, izsaucot adder()
funkciju, mēs iegūstam 3 skaitļu summu kā izvadi.
Ļauj redzēt, kas notiek, ja mēs funkcijai nododam vairāk nekā 3 argumentus adder()
.
def adder(x,y,z): print("sum:",x+y+z) adder(5,10,15,20,25)
Kad mēs palaidīsim iepriekš minēto programmu, izeja būs
TypeError: papildinātājam () ir 3 pozīcijas argumenti, bet tika doti 5
Iepriekš minētajā programmā adder()
funkcijai tika nodoti 5 argumenti, nevis 3 argumenti, kuru dēļ mēs saņēmām TypeError
.
Ievads par * args un ** kwargs Python
Programmā Python funkcijai var nodot mainīgu argumentu skaitu, izmantojot īpašus simbolus. Ir divi īpaši simboli:
- * args (nav atslēgvārdu argumenti)
- ** kwargs (atslēgvārdu argumenti)
Ja mēs neesam pārliecināti par argumentu skaitu, kas jānodod funkcijās, mēs izmantojam * args un ** kwargs.
Python * argumentē
Tāpat kā iepriekšējā piemērā, mēs neesam pārliecināti par argumentu skaitu, ko var nodot funkcijai. Python ir * args, kas ļauj mums funkcionēt mainīgo skaitu ar atslēgvārdiem nesaistītu argumentu.
Funkcijā mums jāizmanto zvaigznīte *
pirms parametra nosaukuma, lai pārsūtītu mainīga garuma argumentus. Argumenti tiek nodoti kā kopa, un šie nodotie argumenti funkcijas iekšpusē veido dubultošanos ar tādu pašu nosaukumu kā parametrs, izņemot zvaigznīti *
.
2. piemērs: Izmantojot * args, mainīgā garuma argumentus nododiet funkcijai
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)
Kad mēs palaidīsim iepriekš minēto programmu, izeja būs
Summa: 8 Summa: 22 Summa: 17
Iepriekš minētajā programmā mēs izmantojām * num kā parametru, kas ļauj adder()
funkcijai nodot mainīga garuma argumentu sarakstu . Funkcijas iekšpusē mums ir cilpa, kas pievieno nodoto argumentu un izdrukā rezultātu. Mēs kā argumentu funkcijai nodevām 3 dažādus kopas ar mainīgu garumu.
Python ** kwargs
Python nodod mainīga garuma argumentu, kas nav atslēgvārds, lai darbotos, izmantojot * args, taču mēs to nevaram izmantot, lai nodotu atslēgvārda argumentu. Šai problēmai Python ir ieguvis risinājumu ar nosaukumu ** kwargs, kas ļauj mums funkcijai nodot atslēgvārdu argumentu mainīgo garumu.
Funkcijā mēs izmantojam dubulto zvaigznīti **
pirms parametra nosaukuma, lai apzīmētu šāda veida argumentus. Argumenti tiek nodoti kā vārdnīca, un šie argumenti padara vārdnīcas iekšējo funkciju ar nosaukumu tādu pašu kā parametrs, izņemot dubulto zvaigznīti **
.
3. piemērs: ** kwargs izmantošana mainīgā atslēgvārda argumentu nodošanai 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)
Kad mēs palaidīsim iepriekš minēto programmu, izeja būs
Argumenta datu tips: Vārds ir Sita Uzvārds ir Sharma Vecums ir 22 Tālrunis ir 1234567890 Argumenta datu tips: Vārds ir Džons Uzvārds ir Wood E-pasts ir [email protected] Valsts ir Wakanda Vecums ir 25 Tālrunis ir 9876543210
Iepriekš minētajā programmā mums kā funkcija ir funkcija intro()
ar ** datiem. Mēs nodevām funkcijai divas vārdnīcas ar mainīgu argumentu garumu intro()
. Mums ir cilpas iekšējā intro()
funkcija, kas darbojas ar nodotās vārdnīcas datiem un izdrukā vārdnīcas vērtību.
Kas jāatceras:
- * args un * kwargs ir īpašs atslēgvārds, kas ļauj funkcijai izmantot mainīga garuma argumentu.
- * args nodod mainīgu skaitu atslēgvārdu nesaturošu argumentu saraksta un ar kuru saraksta darbību var nodarboties.
- ** kwargs nodod mainīgu skaitu atslēgvārdu argumentu vārdnīcas, lai darbotos, kurā var veikt vārdnīcas darbību.
- * args un ** kwargs padara funkciju elastīgu.