In diesem Artikel besprechen wir, was ** (Doppelstern/Sternchen) und * (Stern/Sternchen) für Parameter in tun Python , Hier werden wir auch darauf eingehen args- und kwargs-Beispiele in Python. Mit speziellen Symbolen können wir einer Funktion eine variable Anzahl von Argumenten übergeben.
Es gibt zwei besondere Symbole:
*args und **kwargs in Python
Spezielle Symbole, die zum Übergeben von Argumenten in Python verwendet werden:
- *args (Nicht-Schlüsselwort-Argumente)
- **kwargs (Schlüsselwortargumente)
Notiz: Wir verwenden die Wildcard- oder *-Notation wie diese – *args OR **kwargs – als Argument unserer Funktion, wenn wir Zweifel an der Anzahl der Argumente haben, die wir in einer Funktion übergeben sollten.
doppelt verkettete Liste
Was ist Python *args?
Die spezielle Syntax *argumente wird in Funktionsdefinitionen in Python verwendet, um einer Funktion eine variable Anzahl von Argumenten zu übergeben. Es wird verwendet, um eine nicht mit Schlüsselwörtern versehene Argumentliste variabler Länge zu übergeben.
- Die Syntax besteht darin, das Symbol * zu verwenden, um eine variable Anzahl von Argumenten aufzunehmen; Konventionell wird es oft zusammen mit dem Wort args verwendet.
- Was *argumente ermöglicht es Ihnen, mehr Argumente aufzunehmen, als Sie zuvor definiert haben. Mit *argumente können beliebig viele zusätzliche Argumente an Ihre aktuellen formalen Parameter angehängt werden (einschließlich null zusätzlicher Argumente).
- Beispielsweise möchten wir eine Multiplikationsfunktion erstellen, die eine beliebige Anzahl von Argumenten akzeptiert und diese alle miteinander multiplizieren kann. Dies kann mit *args erfolgen.
- Mit dem * wird die Variable, die wir mit dem * verknüpfen, iterierbar, was bedeutet, dass Sie beispielsweise darüber iterieren, einige Funktionen höherer Ordnung wie Map und Filter usw. ausführen können.
Beispiel 1:
Zimt vs. Mate
Python-Programm zur Veranschaulichung von *args für eine variable Anzahl von Argumenten
Python
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>
Ausgabe:
Hello Welcome to techcodeview.com>
Beispiel 2:
Python-Programm zur Veranschaulichung von *args mit einem ersten zusätzlichen 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')>
Ausgabe:
First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>
Was ist Python **kwargs?
Die spezielle Syntax **Kwargs in Funktionsdefinitionen in Python wird verwendet, um eine mit Schlüsselwörtern versehene Argumentliste variabler Länge zu übergeben. Wir verwenden den Namen kwargs mit dem Doppelstern. Der Grund dafür ist, dass der Doppelstern es uns ermöglicht, Schlüsselwortargumente (und eine beliebige Anzahl davon) zu übergeben.
Sitzung ist abgelaufen
- Bei einem Schlüsselwortargument geben Sie der Variablen einen Namen, wenn Sie sie an die Funktion übergeben.
- Man kann sich das vorstellen kwargs als Wörterbuch, das jedes Schlüsselwort dem Wert zuordnet, den wir daneben übergeben. Deshalb, wenn wir über iterieren kwargs Es scheint keine Reihenfolge zu geben, in der sie ausgedruckt wurden.
Beispiel 1:
Python-Programm zur Veranschaulichung von *kwargs für eine variable Anzahl von Schlüsselwortargumenten. Hier akzeptieren **kwargs Schlüsselwortargumente variabler Länge, die vom Funktionsaufruf übergeben werden. for first='Geeks' first ist der Schlüssel und 'Geeks' ist ein Wert. Mit einfachen Worten: Was wir zuweisen, ist Wert, und wem wir zuweisen, ist der Schlüssel.
Python def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>
Ausgabe:
first == Geeks mid == for last == Geeks>
Beispiel 2:
Python-Programm zur Veranschaulichung von **kwargs für eine variable Anzahl von Schlüsselwortargumenten mit einem zusätzlichen Argument. Trotzdem, aber eine Änderung besteht darin, dass wir Nicht-Schlüsselwort-Argumente übergeben, die durch Positionsargumente (arg1 in myFun) akzeptiert werden. und Schlüsselwortargumente, die wir übergeben, werden von **kwargs akzeptiert. einfach, oder?
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')>
Ausgabe:
first == Geeks mid == for last == Geeks>
Verwenden von *args und **kwargs in Python zum Aufrufen einer Funktion
Beispiel 1:
Schnelle Sortierung
Hier übergeben wir *args und **kwargs als Argument in der myFun-Funktion. Die Übergabe von *args an myFun bedeutet einfach, dass wir die Positionsargumente und Argumente variabler Länge übergeben, die in args enthalten sind. Also gehen Geeks an arg1 weiter, um an arg2 zu übergeben, und Geeks gehen an arg3 weiter. Wenn wir **kwargs als Argument an myFun übergeben, bedeutet das, dass es Schlüsselwortargumente akzeptiert. Hier ist arg1 der Schlüssel und der Wert ist „Geeks“, der an arg1 übergeben wird, und genauso wird „for“ und „Geeks“ an arg2 bzw. arg3 übergeben. Nachdem wir alle Daten übergeben haben, drucken wir alle Daten in Zeilen aus.
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)>
Ausgabe:
arg1: Geeks arg2: for arg3: Geeks arg1: Geeks arg2: for arg3: Geeks>
Beispiel 2:
Hier übergeben wir *args und **kwargs als Argument in der myFun-Funktion. Wo „Geeks“, „für“, „Geeks“ wird als *args übergeben, und first=Geeks, mid=for, last=Geeks wird als **Kwargs und Druck übergeben in der gleichen Zeile.
C++-PrototypfunktionPython
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')>
Ausgabe:
args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>
Verwenden von *args und **kwargs in Python zum Festlegen von Objektwerten
- *args empfängt Argumente als Tupel .
- **kwargs empfängt Argumente als Wörterbuch .
Beispiel 1: Verwendung von 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)>
Ausgabe:
red 250>
Beispiel 2: Verwendung von 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)>
Ausgabe:
red 250>