So verwenden Sie *args und **kwargs in Python-Funktionen
Beherrschen Sie *args und **kwargs in Python. Erfahren Sie, wie Sie flexible Funktionen mit dynamischen Positions- und Schlüsselwortargumenten schreiben, Sammlungen entpacken und Wrapper-Funktionen erstellen.
Übersicht
In Python müssen Sie häufig Funktionen entwerfen, die eine variable Anzahl von Argumenten akzeptieren können. Zum Beispiel eine Funktion, die die Summe beliebig vieler Ganzzahlen berechnet, oder eine Funktion, die Metadaten mit variierenden Feldern protokolliert. Anstatt Benutzer zu zwingen, eine Liste oder ein Wörterbuch zu übergeben, stellt Python zwei spezielle Symbole bereit: „*args“ und „**kwargs“.
Die Syntax „*args“ ermöglicht es einer Funktion, eine beliebige Anzahl von Positionsargumenten zu akzeptieren. Das einzelne Sternchen „*“ fungiert als Entpackoperator. Wenn es in eine Funktionsdefinition eingefügt wird, sammelt es zusätzliche Positionsargumente in einem Tupel namens „args“. Auf diese Weise können Sie die Eingabewerte problemlos durchlaufen, Berechnungen durchführen oder sie problemlos an eine andere Funktion übergeben.
Die „**kwargs“-Syntax hingegen ermöglicht es einer Funktion, eine beliebige Anzahl von Schlüsselwortargumenten (benannt) zu akzeptieren. Das doppelte Sternchen „**“ sammelt diese Argumente in einem Wörterbuch namens „kwargs“. Dies ist unglaublich nützlich für die Übergabe optionaler Konfigurationen, Stilargumente oder Datenbankattribute. Denken Sie daran, dass die Namen „args“ und „kwargs“ Konventionen sind; Die eigentliche Funktionalität wird durch die einzelnen und doppelten Sternchen bestimmt.
Code- und Ausführungsausgabe
Dieser Code demonstriert die Verwendung von *args zum Summieren von Variablenzahlen, **kwargs zum Drucken von Benutzerprofilen und die Kombination beider in einer einzigen Funktion.
def sum_all(*args):
print("args type:", type(args).__name__)
return sum(args)
print("Sum (1, 2, 3):", sum_all(1, 2, 3))
print("Sum (10, 20):", sum_all(10, 20))
def print_profile(**kwargs):
print("kwargs type:", type(kwargs).__name__)
for key, value in kwargs.items():
print(f"{key}: {value}")
print_profile(name="Bob", role="developer", country="US")
def master_function(first, *args, **kwargs):
print(f"First argument: {first}")
print(f"Additional positional args: {args}")
print(f"Keyword args: {kwargs}")
master_function("hello", 1, 2, 3, debug=True, user_id=42)args type: tuple
Sum (1, 2, 3): 6
args type: tuple
Sum (10, 20): 30
kwargs type: dict
name: Bob
role: developer
country: US
First argument: hello
Additional positional args: (1, 2, 3)
Keyword args: {'debug': True, 'user_id': 42}Schrittweise Umsetzung
- Verwenden Sie ein einzelnes Sternchen vor einem Parameter (z. B. *args), um Positionsargumente in einem Tupel zusammenzufassen.
- Verwenden Sie ein doppeltes Sternchen vor einem Parameter (z. B. **kwargs), um Schlüsselwortargumente in einem Wörterbuch zusammenzufassen.
- Behalten Sie die richtige Parameterreihenfolge bei: Standardparameter, *args, Nur-Schlüsselwort-Parameter, dann **kwargs.
- Verwenden Sie beim Aufrufen von Funktionen die Entpacksyntax, indem Sie *iterable oder **dictionary übergeben.
Häufig gestellte Fragen
Muss ich die Namen „args“ und „kwargs“ verwenden?
Nein, das sind Standard-Community-Konventionen. Lediglich die Präfixe * und ** sind syntaktisch erforderlich. Sie könnten *Werte und **Optionen schreiben, aus Gründen der Lesbarkeit wird jedoch dringend empfohlen, sich an *args und **kwargs zu halten.
Was ist die richtige Reihenfolge beim Definieren einer Funktion?
Die richtige Reihenfolge der Argumente in einer Funktionssignatur ist: Positionsargumente, *args, Nur-Schlüsselwort-Argumente und schließlich **kwargs.
Verwandte Themen
Erfahren Sie, wie Sie eine Klasse in Python erstellen. Beherrschen Sie den __init__-Konstruktor, die Instanzmethoden, das Schlüsselwort self und die Objektinstanziierung.
So verwenden Sie Lambda-Funktionen in PythonErfahren Sie, wie Sie Lambda-Funktionen in Python verwenden. Beherrschen Sie anonyme Funktionen, Inline-Rückrufe und das Sortieren von Listendaten mit Lambda-Schlüsseln.
Empfohlene Python-Ressourcen
Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.
Python-Schleifen
Erfahren Sie, wie Sie Python-Schleifen zum Durchlaufen von Daten verwenden. Beherrschen Sie Best Practices für For-Schleifen, While-Schleifen, Break, Continue und Loop anhand interaktiver Beispiele.
Spickzettel für Python-String-Methoden
Ein vollständiges Referenzhandbuch für die Python-String-Manipulation. Meistern Sie das Formatieren, Suchen, Teilen, Ersetzen und Überprüfen von Zeichenfolgeneigenschaften.
Python vs. JavaScript: Welche Programmiersprache ist die beste?
Ein umfassender Vergleich zwischen Python und JavaScript. Entdecken Sie Syntaxunterschiede, Leistung, Anwendungsfälle (Backend vs. Frontend) und Codierungsbeispiele.