In diesem Tutorial konzentriere ich mich auf Argumente (* args
) und Schlüsselwortargumente (* Kwargs
) in Python.
Ich werde Ihnen beibringen, was Argumente und Kwargs sind und, was am wichtigsten ist, wie man sie benutzt - das ist, wie Sie eine unbegrenzte Anzahl von Argumenten und Schlüsselwortargumenten in Funktionen aufnehmen können.
* args
werden verwendet, um zu übergeben Nicht-Schlüsselwort Argumente. Beispiele für Nicht-SchlüsselwörterArgumente sind Spaß (3,4), Spaß ("Foo", "Bar")
.
* args
werden normalerweise als Maßnahme verwendet, um zu verhindern, dass das Programm abstürzt, wenn wir nicht wissen, wie viele Argumente an die Funktion übergeben werden. Dies wird in C ++ sowie in anderen Programmiersprachen verwendet.
** Kwargs
ist ein Wörterbuch mit Schlüsselwortargumenten. Das **
erlaubt uns, eine beliebige Anzahl von Schlüsselwortargumenten zu übergeben. Ein Schlüsselwortargument ist im Wesentlichen ein Wörterbuch.
Ein Beispiel für ein StichwortArgument ist Spaß (foo = 2, bar = 7)
.
** Kwargs
sind einfach so * args
außer Sie deklarieren die Variablen und den Betrag innerhalb der Funktion Argumente.
Args und Kwargs sind nützlich, wenn Sie:
Schauen wir uns an, wie Kwargs und Argumente in Funktionen verwendet werden.
Die folgende Funktion enthält drei Argumente. Die drei Argumente wurden explizit definiert, sodass mehr oder weniger Fehler im Programm verursachen.
def add (a, b, c): print (a + b + c) print add (2,3,4)
Lassen Sie uns die Funktion ausführen. Die Funktion fügt die drei Zahlen hinzu und liefert folgende Ausgabe:
Ausgabe 9
Was wäre, wenn wir vier Argumente anstelle der erforderlichen drei in der Funktion übergeben würden? Wir erhalten eine Fehlermeldung wie unten gezeigt.
Dies liegt daran, dass in der Funktion nur drei Parameter definiert wurden. Beim Aufruf der Funktion haben wir jedoch vier Positionsargumente übergeben.
def add (a, b, c): print (a + b + c) print add (2,3,4,5)
Output TypeError: add () benötigt 3 Positionsargumente, aber 4 wurden angegeben
Im zweiten Beispiel weiter unten *
ist für Nicht-Schlüsselwort Argumente und wird in die Funktion übergeben. Anstatt definierte Argumente zu haben, ersetzen wir ein
, b
und c
mit einem einzigen Parameter (* args
).
Beachten Sie, wie die Verwendung von * args
macht es einfach, eine beliebige Anzahl von Argumenten zu verwenden, ohne Ihren Code ändern zu müssen. * args
Bieten Sie Ihrem Code mehr Flexibilität, da Sie in der Zukunft beliebig viele Argumente verwenden können.
def add (* args): total = 0 für arg in args: total + = arg Drucksumme
Szenario 1 print add (1,2,5) Ausgabe 8
Szenario 2 Druck hinzufügen (1,2,5,6) Ausgabe 14
Szenario 3 print add (1,2,5,8) Ausgabe 16
Erstellen Sie eine einfache Funktion wie gezeigt:
def func (* args): # * args bedeutet für alle Argumente, die Sie in sich aufnehmen, sie werden alle für arg in args: print arg einfangen
Testen Sie die Funktion mit einer Kombination aus ganzen Zahlen und Strings:
def func (* args): # * args bedeutet für alle Argumente, die Sie aufgreifen, es werden sie alle für arg in args gefunden: print arg print func (11,3,4,5, "tuts")
Ausgang 11 3 4 5 Tuts
Was wäre, wenn wir eine Liste als Argument übergeben würden? Testen Sie die Funktion mit einer Liste, indem Sie die vorherigen Argumente durch eine Liste ersetzen, L = [11,3,4,5, "Tuts]
.
def func (* args): # * args bedeutet für alle Argumente, die Sie in sich aufnehmen, es werden sie alle für arg in args gefunden: print arg l = [11,3,4,5, "tuts"] print func (l )
Dies gibt die Liste als Ganzes aus. Dies liegt daran, dass die Liste als ein Element interpretiert wird. Ausgabe [11,3,4,5, "Tuts]
Im obigen Beispiel können Sie auch verwenden * args
Entpacken Sie Argumente, die sich bereits in einer Liste oder einem Tupel befinden, sodass alle Elemente in der Liste als verschiedene Parameter übergeben werden.
Mit der gleichen Funktion:
def func (* args): # * args bedeutet für alle Argumente, die Sie in sich aufnehmen, sie werden alle für arg in args einfangen: print (arg) l = [11,3,4,5, "tuts"] print ( func (* l))
Das * entpackt die Liste und gibt jedes einzelne Listenelement aus. Ausgang 11 3 4 5 Tuts
Mit Kwargs können Sie Schlüsselwortargumente an eine Funktion übergeben. Sie werden verwendet, wenn Sie sich nicht sicher sind, wie viele Schlüsselwortargumente in der Funktion übergeben werden.
Schreibe eine Funktion my_func
und übergeben (x = 10, y = 20)
als Schlüsselwort Argumente wie unten gezeigt:
def my_func (x = 10, y = 20): x, y drucken
Dies gibt die Werte für x und y aus. Ausgabe 10,20
Kwargs können zum Entpacken von Wörterbuchschlüssel und Wertepaaren verwendet werden. Dies geschieht mit der doppelten Sternchen-Notation (**
). Es ist wichtig zu wissen, dass jeder Schlüssel mit einem Wert abgeglichen werden muss.
Hier ist ein typisches Beispiel dafür, wie es gemacht wird. Die folgende Funktion nimmt Länder als Schlüssel und ihre Hauptstädte als Werte an. Dann druckt er eine Anweisung aus, die die Kwargs durchläuft, und ordnet jedes Schlüsselwort dem ihm zugewiesenen Wert zu.
def capital_cities (** kwargs): # initialisiert eine leere Liste zum Speichern des Ergebnisses result = [] für key, Wert in kwargs.items (): result.append ("Die Hauptstadt von ist .format (key.) , value) Ergebnis zurückgeben
Sie können die Funktion mit beliebigen Argumenten aufrufen.
def capital_cities (** kwargs): # initialisiert eine leere Liste zum Speichern des Ergebnisses result = [] für key, Wert in kwargs.items (): result.append ("Die Hauptstadt von ist .format (key.) Ergebnis) print capital_city (China = "Peking", Kairo = "Ägypten", Rom = "Italien"))
Ausgabe ['Die Hauptstadt Chinas ist Peking', 'Die Hauptstadt Kairos ist Ägypten', 'Die Hauptstadt Roms ist Italien']
Nehmen wir für ein komplexeres Beispiel an, wir haben ein Modell für einen Kunden, das ungefähr so aussieht:
Klasse Customer (models.Model): first_name = models.CharField (max_length = 100, null = True) last_name = models.CharField (max_length = 100) Benutzername = models.Charfield (max_length = 100) email = models.EmailField (max_length = 100) Kennwort = Modelle.CharField (max_length = 100)
Sie können kwargs verwenden, um sowohl Dateneingaben als auch Datenabfragen von Modellobjekten auszuführen. Schreiben wir eine Funktionsansicht, um einen neuen Kunden anzulegen.
kwargs = "first_name": "John", "last_name": "Doe", "username": "johndoe", "email" [email protected] "," password ":" 1234 " new_user = User (* * kwargs) new_user.save ()
So führen Sie eine Abfrage des Kunden aus, den wir gerade mit Kwargs erstellt haben.
filter_customer = 'email': [email protected], 'username': johndoe, Customer.objects.filter (** filter_customer)
Bei Verwendung von args und kwargs in derselben Funktionsdefinition, * args
muss vorher auftreten ** Kwargs
.
Klasse MyFunction (Foo): def __init __ (self, * args, ** kwargs): Ausdruck 'my function' super (MyFunction, self) .__ init __ (* args, ** kwargs)
Beispiel:
def Func (* args, ** kwargs): für arg in args: print arg für ein Element in kwargs.items (): print item
Merken args
sollte vorher kommen Kwargs
.
def Func (* args, ** kwargs): für arg in args: print arg für ein Element in kwargs.items (): print item print Func (1, x = 7, u = 8)
Ausgang 1 ('x', 7) ('u', 8)
Ich hoffe, dieses Tutorial hat Ihnen geholfen, Args und Kwargs zu verstehen.
Im Folgenden sind einige Hinweise zu beachten, wenn Sie args und kwargs verwenden:
* args
und ** Kwargs
sind eine spezielle Syntax, die in Funktionen verwendet wird, um eine variable Anzahl von Argumenten an eine Funktion zu übergeben.* args
vor auftreten ** Kwargs
in einer Funktionsdefinition.* args
und ** Kwargs
werden am besten in Situationen eingesetzt, in denen die Anzahl der Eingänge relativ gering bleibt.args
und Kwargs
sind nur nach Vereinbarung und keine Voraussetzung. Zum Beispiel können Sie verwenden * foo
anstatt * args
oder ** foo
anstatt ** Kwargs
.Die offizielle Python-Dokumentation bietet viele Informationen für weitere Studien. Zögern Sie nicht, zu sehen, was wir auf dem Markt zum Verkauf und zum Lernen zur Verfügung haben, und zögern Sie nicht, Fragen zu stellen und mit dem untenstehenden Feed wertvolles Feedback zu geben.