Heim >Backend-Entwicklung >Python-Tutorial >Was ist der Unterschied zwischen „*args' und „kwargs' in Python-Funktionsparametern?

Was ist der Unterschied zwischen „*args' und „kwargs' in Python-Funktionsparametern?

Barbara Streisand
Barbara StreisandOriginal
2024-12-29 03:18:18150Durchsuche

What's the Difference Between `*args` and `kwargs` in Python Function Parameters?

Enthüllung der Bedeutung von (Doppelstern) und (Stern) in Funktionsparametern*

In Python Funktion Mit args und *kwargs bezeichnete Parameter dienen als vielseitige Anpassungsmechanismen beliebige Argumente.

Positionsargumente mit *args entpacken

Der Parameter *args sammelt alle Positionsargumente, die über die vordefinierten hinausgehen, in einem Tupel. Zum Beispiel:

def foo(*args):
    for arg in args:
        print(arg)

Diese Funktion kann eine beliebige Anzahl von Positionsargumenten akzeptieren, wie zum Beispiel:

foo(1)  # Output: 1
foo(1, 2, 3)  # Output: 1 2 3

Zusammensetzen von Schlüsselwortargumenten mit kwargs**

Andererseits sammelt **kwargs alle Schlüsselwortargumente in einem Wörterbuch.

def bar(**kwargs):
    for key, value in kwargs.items():
        print(key, value)

Der Aufruf dieser Funktion mit Schlüsselwortargumenten ergibt:

bar(name='John', age=30)  # Output: name John, age 30

Zusammenspiel von args und kwargs*

Beide Redewendungen können kombiniert werden, um eine Mischung aus fest und variabel zu ermöglichen Argumente:

def foo(kind, *args, bar=None, **kwargs):
    print(kind, args, bar, kwargs)

Diese Funktion kann wie folgt aufgerufen werden:

foo(123, 'a', 'b', apple='red')  # Output: 123 ('a', 'b') None {'apple': 'red'}

Zusätzliche Anwendungsfälle

  • Entpacken Argumentlisten: Das *-Idiom kann zum Entpacken von Argumentlisten beim Aufruf von a verwendet werden Funktion:
def foo(bar, lee):
    print(bar, lee)

baz = [1, 2]
foo(*baz)  # Output: 1 2
  • Extended Iterable Unpacking (Python 3): * kann auf der linken Seite einer Aufgabe verwendet werden, um eine Liste zu erhalten:
first, *rest = [1, 2, 3, 4]
# first = 1
# rest = [2, 3, 4]
  • Nur-Schlüsselwort-Argumente (Python 3 ):Funktionen können Schlüsselwortargumente mithilfe der folgenden Syntax einschränken:
def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass

Diese Funktion erfordert drei Positionsargumente und eine beliebige Anzahl von Schlüsselwortargumenten nach *.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „*args' und „kwargs' in Python-Funktionsparametern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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