Heim > Backend-Entwicklung > Python-Tutorial > Wie gehen Pythons *args und kwargs mit Funktionsparametern um?

Wie gehen Pythons *args und kwargs mit Funktionsparametern um?

Mary-Kate Olsen
Freigeben: 2024-12-22 15:41:11
Original
812 Leute haben es durchsucht

How Does Python's *args and kwargs Handle Function Parameters?

Parameter-Entpacken mit und in Python-Funktionen*

In Python-Funktionen die und * Die Syntax ermöglicht eine größere Flexibilität bei der Parameterbehandlung.

Entpacken von Positionsargumenten (kwargs)

Der Parameter *args sammelt alle Positionsargumente als Tupel. Zum Beispiel:

def foo(x, y, *args):
    for a in args:
        print(a)
Nach dem Login kopieren

Der Aufruf von foo(1, 2, 3) gibt Folgendes aus:

1
2
3
Nach dem Login kopieren

Keyword Argument Unpacking (kwargs)

Der Parameter **kwargs sammelt alle Schlüsselwortargumente als Wörterbuch. Zum Beispiel:

def bar(x, y, **kwargs):
    for k, v in kwargs.items():
        print(k, v)
Nach dem Login kopieren

Calling bar(x=1, y=2, name='John') gibt Folgendes aus:

name John
Nach dem Login kopieren

Combined Unpacking

Beide Redewendungen können kombiniert werden, um eine Mischung aus festen und variablen Argumenten zu ermöglichen. Zum Beispiel:

def foo(kind, *args, bar=None, **kwargs):
    print(kind, args, bar, kwargs)
Nach dem Login kopieren

Der Aufruf von foo(123, 'a', 'b', apple='red') gibt Folgendes aus:

123 ('a', 'b') None {'apple': 'red'}
Nach dem Login kopieren

Umgekehrt können kwargs sein Wird zum Entpacken von Schlüsselwortargumenten in Funktionsaufrufen verwendet. Zum Beispiel:

def foo(a, b, c):
    print(a, b, c)

obj = {'b':10, 'c':'lee'}

foo(100, **obj) # Prints 100 10 lee
Nach dem Login kopieren

Listen- und Tupel-Entpacken mit *

Die *-Syntax kann auch zum Entpacken von Listen und Tupeln beim Aufruf von Funktionen verwendet werden. Zum Beispiel:

def foo(bar, lee):
    print(bar, lee)

baz = [1, 2]

foo(*baz) # Prints 1 2
Nach dem Login kopieren

Extended Iterable Unpacking

In Python 3 kann * auf der linken Seite einer Zuweisung verwendet werden, um Iterables in einzelne Variablen zu entpacken. Zum Beispiel:

first, *rest = [1, 2, 3, 4]
# first = 1
# rest = [2, 3, 4]
Nach dem Login kopieren

Nur ​​Positionsargumente

Python 3 führte auch Nur-Positionsargumente ein. Funktionen können festlegen, dass nur bestimmte Argumente positionell sein können. Zum Beispiel:

def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass
Nach dem Login kopieren

Diese Funktion akzeptiert nur 3 Positionsargumente. Alle Argumente nach * müssen als Schlüsselwortargumente übergeben werden.

Das obige ist der detaillierte Inhalt vonWie gehen Pythons *args und kwargs mit Funktionsparametern um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage