I denne artikel vil vi dække, hvad ** (dobbeltstjerne/stjerne) og * (stjerne/stjerne) gør for parametre i Python , Her vil vi også dække args og kwargs eksempler i Python. Vi kan sende et variabelt antal argumenter til en funktion ved hjælp af specielle symboler.
Der er to specielle symboler:
*args og **kwargs i Python
Specielle symboler, der bruges til at sende argumenter i Python:
- *args (ikke-søgeordsargumenter)
- **kwargs (søgeordsargumenter)
Bemærk: Vi bruger jokertegnet eller *-notationen som denne - *args ELLER **kwargs - som vores funktions argument, når vi er i tvivl om antallet af argumenter, vi skal sende i en funktion.
Hvad er Python *args?
Den specielle syntaks *args i funktionsdefinitioner i Python bruges til at sende et variabelt antal argumenter til en funktion. Den bruges til at sende en argumentliste med variabel længde uden nøgleord.
- Syntaksen er at bruge symbolet * til at tage et variabelt antal argumenter ind; efter konvention bruges det ofte med ordet args.
- Hvad *args giver dig mulighed for at gøre, er at tage flere argumenter ind end antallet af formelle argumenter, som du tidligere har defineret. Med *args , kan et hvilket som helst antal ekstra argumenter sættes på dine nuværende formelle parametre (inklusive nul ekstra argumenter).
- For eksempel vil vi lave en multiplikationsfunktion, der tager et vilkårligt antal argumenter og er i stand til at gange dem alle sammen. Det kan gøres ved hjælp af *args.
- Ved at bruge *, bliver variablen, som vi forbinder med *, iterabel, hvilket betyder, at du kan gøre ting som at iterere over den, køre nogle højere-ordens funktioner såsom kort og filter osv.
Eksempel 1:
Python-program til at illustrere *args for et variabelt antal argumenter
python
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>
Produktion:
stdin c programmering
Hello Welcome to techcodeview.com>
Eksempel 2:
Python-program til at illustrere *args med et første ekstra argument
Python3 def myFun(arg1, *argv): print('First argument :', arg1) for arg in argv: print('Next argument through *argv :', arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>
Produktion:
First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>
Hvad er Python **kwargs?
Den særlige syntaks **kwargs i funktionsdefinitioner i Python bruges til at videregive en nøgleordet argumentliste med variabel længde. Vi bruger navnet kwargs med dobbeltstjernen. Årsagen er, at dobbeltstjernen giver os mulighed for at passere søgeordsargumenter (og et hvilket som helst antal af dem).
- Et nøgleordsargument er, hvor du giver et navn til variablen, når du sender den ind i funktionen.
- Man kan tænke på kwargs som værende en ordbog, der kortlægger hvert søgeord til den værdi, vi videregiver ved siden af det. Det er derfor, når vi itererer over kwargs der ser ikke ud til at være nogen rækkefølge, som de blev udskrevet i.
Eksempel 1:
Python-program til at illustrere *kwargs for et variabelt antal søgeordsargumenter. Her accepterer **kwargs nøgleordet variabel længde-argument videregivet af funktionskaldet. for first='Geeks' først er nøglen, og 'Geeks' er en værdi. med enkle ord, hvad vi tildeler er værdi, og hvem vi tildeler er nøglen.
Python def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>
Produktion:
first == Geeks mid == for last == Geeks>
Eksempel 2:
eksempler på Moore maskine
Python-program til at illustrere **kwargs for et variabelt antal søgeordsargumenter med et ekstra argument. Alligevel, men en ændring er, at vi sender et ikke-søgeordsargument, som er acceptabelt med positionsargumentet (arg1 i myFun). og søgeordsargumenter, vi sender, er acceptable af **kwargs. simpelt ikke?
Python def myFun(arg1, **kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun('Hi', first='Geeks', mid='for', last='Geeks')>
Produktion:
first == Geeks mid == for last == Geeks>
Brug af både *args og **kwargs i Python til at kalde en funktion
Eksempel 1:
Her sender vi *args og **kwargs som et argument i myFun-funktionen. At sende *args til myFun betyder ganske enkelt, at vi videregiver de positionelle og variabel-længde-argumenter, som er indeholdt i args. så nørder går videre til arg1, for pass til arg2, og nørder går videre til arg3. Når vi sender **kwargs som argument til myFun, betyder det, at det accepterer søgeordsargumenter. Her er arg1 nøglen, og værdien er Geeks, som sendes til arg1, og ligesom det for og Geeks går til henholdsvis arg2 og arg3. Efter at have videregivet alle data, udskriver vi alle data i linjer.
python def myFun(arg1, arg2, arg3): print('arg1:', arg1) print('arg2:', arg2) print('arg3:', arg3) # Now we can use *args or **kwargs to # pass arguments to this function : args = ('Geeks', 'for', 'Geeks') myFun(*args) kwargs = {'arg1': 'Geeks', 'arg2': 'for', 'arg3': 'Geeks'} myFun(**kwargs)>
Produktion:
arg1: Geeks arg2: for arg3: Geeks arg1: Geeks arg2: for arg3: Geeks>
Eksempel 2:
Her sender vi *args og **kwargs som et argument i myFun-funktionen. hvor 'nørder', 'for', 'nørder' er bestået som *args, og første=nørder, midt=for, sidste=nørder er bestået som **kwargs og udskrivning i samme linje.
regex javapython
def myFun(*args, **kwargs): print('args: ', args) print('kwargs: ', kwargs) # Now we can use both *args ,**kwargs # to pass arguments to this function : myFun('geeks', 'for', 'geeks', first='Geeks', mid='for', last='Geeks')>
Produktion:
args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>
Brug af *args og **kwargs i Python til at indstille værdier for objektet
Eksempel 1: Brug af Python *args
Python # defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, *args): # access args index like array does self.speed = args[0] self.color = args[1] # creating objects of car class audi = Car(200, 'red') bmw = Car(250, 'black') mb = Car(190, 'white') # printing the color and speed of the cars print(audi.color) print(bmw.speed)>
Produktion:
red 250>
Eksempel 2: Brug af Python **kwargs
Python # defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, **kwargs): # access args index like array does self.speed = kwargs['s'] self.color = kwargs['c'] # creating objects of car class audi = Car(s=200, c='red') bmw = Car(s=250, c='black') mb = Car(s=190, c='white') # printing the color and speed of cars print(audi.color) print(bmw.speed)>
Produktion:
red 250>