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
Freigeben: 2024-12-29 03:18:18
Original
196 Leute haben es durchsucht

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)
Nach dem Login kopieren

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

foo(1)  # Output: 1
foo(1, 2, 3)  # Output: 1 2 3
Nach dem Login kopieren

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)
Nach dem Login kopieren

Der Aufruf dieser Funktion mit Schlüsselwortargumenten ergibt:

bar(name='John', age=30)  # Output: name John, age 30
Nach dem Login kopieren

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)
Nach dem Login kopieren

Diese Funktion kann wie folgt aufgerufen werden:

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

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
Nach dem Login kopieren
  • 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]
Nach dem Login kopieren
  • 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
Nach dem Login kopieren

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!

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