In diesem Artikel lernen wir Python * args und ** kwargs, ihre Verwendung und Funktionen anhand von Beispielen kennen.
Bei der Programmierung definieren wir eine Funktion, um einen wiederverwendbaren Code zu erstellen, der eine ähnliche Operation ausführt. Um diese Operation auszuführen, rufen wir eine Funktion mit dem spezifischen Wert auf. Dieser Wert wird in Python als Funktionsargument bezeichnet.
Wir empfehlen Ihnen, die Argumente Python Function und Python Function zu lesen.
Angenommen, wir definieren eine Funktion zum Hinzufügen von 3 Zahlen.
Beispiel 1: Funktion zum Hinzufügen von 3 Zahlen
def adder(x,y,z): print("sum:",x+y+z) adder(10,12,13)
Wenn wir das obige Programm ausführen, wird die Ausgabe sein
Summe: 35
Im obigen Programm haben wir eine adder()
Funktion mit drei Argumenten x, y und z. Wenn wir beim Aufrufen der adder()
Funktion drei Werte übergeben , erhalten wir die Summe der drei Zahlen als Ausgabe.
Mal sehen, was passiert, wenn wir mehr als 3 Argumente in der adder()
Funktion übergeben.
def adder(x,y,z): print("sum:",x+y+z) adder(5,10,15,20,25)
Wenn wir das obige Programm ausführen, wird die Ausgabe sein
TypeError: adder () akzeptiert 3 Positionsargumente, aber 5 wurden angegeben
Im obigen Programm haben wir 5 Argumente an die adder()
Funktion übergeben, anstatt 3 Argumente, aufgrund derer wir sie erhalten haben TypeError
.
Einführung in * args und ** kwargs in Python
In Python können wir eine variable Anzahl von Argumenten mithilfe spezieller Symbole an eine Funktion übergeben. Es gibt zwei spezielle Symbole:
- * args (Nicht-Keyword-Argumente)
- ** kwargs (Schlüsselwortargumente)
Wir verwenden * args und ** kwargs als Argument, wenn wir uns nicht sicher sind, wie viele Argumente in den Funktionen übergeben werden sollen.
Python * args
Wie im obigen Beispiel sind wir uns nicht sicher, wie viele Argumente an eine Funktion übergeben werden können. Python verfügt über * args, mit denen wir die variable Anzahl von Nicht-Schlüsselwortargumenten an function übergeben können.
In der Funktion sollten wir *
vor dem Parameternamen ein Sternchen verwenden , um Argumente variabler Länge zu übergeben. Die Argumente werden als Tupel übergeben, und diese übergebenen Argumente bilden innerhalb der Funktion ein Tupel mit demselben Namen wie der Parameter ohne Sternchen *
.
Beispiel 2: Verwenden von * args, um die Argumente variabler Länge an die Funktion zu übergeben
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)
Wenn wir das obige Programm ausführen, wird die Ausgabe sein
Summe: 8 Summe: 22 Summe: 17
Im obigen Programm haben wir * num als Parameter verwendet, mit dem wir die Argumentliste mit variabler Länge an die adder()
Funktion übergeben können. Innerhalb der Funktion haben wir eine Schleife, die das übergebene Argument hinzufügt und das Ergebnis druckt. Wir haben der Funktion 3 verschiedene Tupel mit variabler Länge als Argument übergeben.
Python ** kwargs
Python übergibt ein Nicht-Schlüsselwort-Argument variabler Länge an die Funktion mit * args, aber wir können dieses nicht verwenden, um ein Schlüsselwort-Argument zu übergeben. Für dieses Problem hat Python eine Lösung namens ** kwargs, mit der wir die variable Länge von Schlüsselwortargumenten an die Funktion übergeben können.
In der Funktion verwenden wir das doppelte Sternchen **
vor dem Parameternamen, um diesen Argumenttyp zu kennzeichnen. Die Argumente werden als Wörterbuch übergeben, und diese Argumente bilden ein Wörterbuch innerhalb der Funktion mit dem gleichen Namen wie der Parameter ohne doppeltes Sternchen **
.
Beispiel 3: Verwenden von ** kwargs zum Übergeben der variablen Schlüsselwortargumente an die Funktion
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)
Wenn wir das obige Programm ausführen, wird die Ausgabe sein
Datentyp des Arguments: Vorname ist Sita Nachname ist Sharma Alter ist 22 Telefon ist 1234567890 Datentyp des Arguments: Vorname ist John Nachname ist Holz E-Mail ist [email protected] Land ist Wakanda Alter ist 25 Telefon ist 9876543210
Im obigen Programm haben wir eine Funktion intro()
mit ** Daten als Parameter. Wir haben der intro()
Funktion zwei Wörterbücher mit variabler Argumentlänge übergeben . Wir haben eine for-Schleife innerhalb der intro()
Funktion, die mit den Daten des übergebenen Wörterbuchs arbeitet und den Wert des Wörterbuchs druckt.
Dinge, an die Sie sich erinnern sollten:
- * args und * kwargs sind spezielle Schlüsselwörter, mit denen die Funktion Argumente mit variabler Länge annehmen kann.
- * args übergibt eine variable Anzahl von Argumenten ohne Schlüsselwörter und für welche Operation der Liste ausgeführt werden kann.
- ** kwargs übergibt die variable Anzahl von Schlüsselwortargumenten an die Funktion, für die die Operation eines Wörterbuchs ausgeführt werden kann.
- * args und ** kwargs machen die Funktion flexibel.