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
Mary-Kate OlsenOriginal
2024-12-22 15:41:11808Durchsuche

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)

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

1
2
3

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)

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

name John

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)

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

123 ('a', 'b') None {'apple': 'red'}

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

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

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]

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

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!

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