I denne artikkelen vil vi dekke hva ** (dobbeltstjerne/stjerne) og * (stjerne/stjerne) gjør for parametere i Python , Her vil vi også dekke args og kwargs eksempler i Python. Vi kan sende et variabelt antall argumenter til en funksjon ved å bruke spesielle symboler.
Det er to spesielle symboler:
*args og **kwargs i Python
Spesielle symboler som brukes for å sende argumenter i Python:
- *args (argumenter som ikke er søkeord)
- **kwargs (søkeordargumenter)
Merk: Vi bruker jokertegnet eller *-notasjonen som dette – *args ELLER **kwargs – som funksjonens argument når vi er i tvil om antall argumenter vi bør sende i en funksjon.
Hva er Python *args?
Den spesielle syntaksen *args i funksjonsdefinisjoner i Python brukes til å sende et variabelt antall argumenter til en funksjon. Den brukes til å sende en argumentliste med variabel lengde uten nøkkelord.
- Syntaksen er å bruke symbolet * for å ta inn et variabelt antall argumenter; etter konvensjon brukes det ofte med ordet args.
- Hva *args lar deg gjøre er å ta inn flere argumenter enn antallet formelle argumenter som du tidligere definerte. Med *args , kan et hvilket som helst antall ekstra argumenter kobles til dine nåværende formelle parametere (inkludert null ekstra argumenter).
- For eksempel ønsker vi å lage en multiplikasjonsfunksjon som tar et hvilket som helst antall argumenter og er i stand til å multiplisere dem alle sammen. Det kan gjøres ved å bruke *args.
- Ved å bruke *, blir variabelen som vi assosierer med * iterabel, noe som betyr at du kan gjøre ting som å iterere over den, kjøre noen høyere ordensfunksjoner som kart og filter, etc.
Eksempel 1:
Python-program for å illustrere *args for et variabelt antall argumenter
python
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>
Produksjon:
hvordan få apple emojis på Android
Hello Welcome to techcodeview.com>
Eksempel 2:
Python-program for å 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')>
Produksjon:
First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>
Hva er Python **kwargs?
Den spesielle syntaksen **kwargs i funksjonsdefinisjoner i Python brukes til å sende en nøkkelordordet argumentliste med variabel lengde. Vi bruker navnet kwargs med dobbeltstjernen. Årsaken er at dobbeltstjernen lar oss gå gjennom søkeordargumenter (og et hvilket som helst antall av dem).
- Et nøkkelordargument er der du gir variabelen et navn når du sender den inn i funksjonen.
- Man kan tenke på kwargs som en ordbok som tilordner hvert nøkkelord til verdien vi sender ved siden av det. Det er derfor når vi itererer over kwargs det ser ikke ut til å være noen rekkefølge de ble skrevet ut i.
Eksempel 1:
Python-program for å illustrere *kwargs for et variabelt antall nøkkelordargumenter. Her aksepterer **kwargs nøkkelordet variabellengde-argument sendt av funksjonskallet. for first='Geeks' først er nøkkelen og 'Geeks' er en verdi. med enkle ord, det vi tildeler er verdi, og hvem vi tildeler er nøkkelen.
Python def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>
Produksjon:
first == Geeks mid == for last == Geeks>
Eksempel 2:
med full form
Python-program for å illustrere **kwargs for et variabelt antall søkeordargumenter med ett ekstra argument. Likevel, men en endring er at vi sender et ikke-søkeord-argument som aksepteres av posisjonsargument (arg1 i myFun). og søkeordargumenter vi sender er akseptable av **kwargs. enkelt ikke sant?
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')>
Produksjon:
first == Geeks mid == for last == Geeks>
Bruke både *args og **kwargs i Python for å kalle en funksjon
Eksempel 1:
Her sender vi *args og **kwargs som et argument i myFun-funksjonen. Å sende *args til myFun betyr ganske enkelt at vi sender argumentene for posisjon og variabel lengde som er inneholdt av args. så, Geeks passerer til arg1, for pass til arg2, og Geeks går til arg3. Når vi sender **kwargs som argument til myFun, betyr det at den godtar søkeordargumenter. Her er arg1 nøkkelen og verdien er Geeks som sendes til arg1, og akkurat som det for og Geeks går til henholdsvis arg2 og arg3. Etter å ha sendt alle dataene skriver vi ut alle dataene 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)>
Produksjon:
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-funksjonen. hvor 'nerder', 'for', 'nerder' sendes som *args, og first=Geeks, mid=for, last=Geeks er bestått som **kwargs og trykking på samme linje.
linux endre navn på katalogenpython
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')>
Produksjon:
args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>
Bruke *args og **kwargs i Python for å angi verdier til objektet
Eksempel 1: bruk av 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)>
Produksjon:
red 250>
Eksempel 2: bruk av 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)>
Produksjon:
red 250>