Python * args og ** kwargs (med eksempler)

I denne artikel lærer vi om Python * args og ** kwargs, deres anvendelser og funktioner med eksempler.

I programmering definerer vi en funktion til at lave en genanvendelig kode, der udfører lignende operationer. For at udføre denne operation kalder vi en funktion med den specifikke værdi, denne værdi kaldes et funktionsargument i Python.

Vi vil anbefale dig at læse argumenter for Python-funktion og Python-funktion.

Antag, vi definerer en funktion til tilføjelse af 3 tal.

Eksempel 1: Funktion til at tilføje 3 tal

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

Når vi kører ovenstående program, vil output være

 sum: 35

I ovenstående program har vi adder()funktion med tre argumenter x, y og z. Når vi videregiver tre værdier, mens vi kalder på adder()funktion, får vi summen af ​​de 3 numre som output.

Lad os se, hvad der sker, når vi sender mere end 3 argumenter i adder()funktionen.

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

Når vi kører ovenstående program, vil output være

 TypeError: adder () tager 3 positionelle argumenter, men 5 blev givet

I ovenstående program sendte vi 5 argumenter til adder()funktionen i stedet for 3 argumenter, som vi fik TypeError.

Introduktion til * args og ** kwargs i Python

I Python kan vi videregive et variabelt antal argumenter til en funktion ved hjælp af specielle symboler. Der er to specielle symboler:

  1. * args (ikke søgeordsargumenter)
  2. ** kwargs (søgeordsargumenter)

Vi bruger * args og ** kwargs som et argument, når vi er usikre på antallet af argumenter, der skal overføres i funktionerne.

Python * argumenterer

Som i ovenstående eksempel er vi ikke sikre på antallet af argumenter, der kan overføres til en funktion. Python har * args, der tillader os at overføre det variable antal ikke-søgeordsargumenter til at fungere.

I funktionen skal vi bruge en stjerne *før parameternavnet til at videregive argumenter med variabel længde. Argumenterne sendes som en tuple, og disse videregivne argumenter gør tuple inde i funktionen med samme navn som parameteren undtagen stjerne *.

Eksempel 2: Brug * args til at sende argumenterne med variabel længde til funktionen

 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)

Når vi kører ovenstående program, vil output være

 Sum: 8 Sum: 22 Sum: 17

I ovenstående program brugte vi * num som en parameter, der giver os mulighed for at overføre argumentlisten med variabel længde til adder()funktionen. Inde i funktionen har vi en løkke, der tilføjer det beståede argument og udskriver resultatet. Vi passerede 3 forskellige tupler med variabel længde som et argument for funktionen.

Python ** kwargs

Python sender variabel længde uden søgeordsargument til at fungere ved hjælp af * args, men vi kan ikke bruge dette til at overføre søgeordsargument. For dette problem har Python en løsning kaldet ** kwargs, det giver os mulighed for at videregive den variable længde af søgeordsargumenter til funktionen.

I funktionen bruger vi den dobbelte stjerne **foran parameternavnet til at betegne denne type argument. Argumenterne sendes som en ordbog, og disse argumenter gør en ordbog inde i funktionen med navnet det samme som parameteren undtagen dobbelt stjerne **.

Eksempel 3: Brug ** kwargs til at overføre de variable søgeordsargumenter til funktionen

 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)

Når vi kører ovenstående program, vil output være

 Datatype af argument: Fornavn er Sita Efternavn er Sharma Alder er 22 Telefon er 1234567890 Datatype af argument: Fornavn er John Efternavn er Træ E-mail er [email protected] Land er Wakanda Alder er 25 Telefon er 9876543210

I ovenstående program har vi en funktion intro()med ** data som parameter. Vi sendte to ordbøger med variabel argumentlængde til intro()funktionen. Vi har en loop inde intro()funktion, der fungerer på dataene i den beståede ordbog og udskriver værdien af ​​ordbogen.

Ting at huske:

  • * args og * kwargs er specielle nøgleord, der giver funktion mulighed for at tage argument med variabel længde.
  • * args passerer variabelt antal ikke-nøgleordede argumenter, og på hvilken operation af listen kan udføres.
  • ** kwargs videregiver variabelt antal nøgleordargumenter ordbog til at fungere, som en ordboks operation kan udføres.
  • * args og ** kwargs gør funktionen fleksibel.

Interessante artikler...