Heim >Backend-Entwicklung >Python-Tutorial >Wie funktionieren *args und kwargs in Python-Funktionsdefinitionen und -Aufrufen?

Wie funktionieren *args und kwargs in Python-Funktionsdefinitionen und -Aufrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-26 05:17:12879Durchsuche

How do *args and kwargs Work in Python Function Definitions and Calls?

* und Parameter in Python-Funktionen

In Python sind die Parameter * (Doppelstern/Stern) und (Stern Die /asterisk-Notation in Funktionsdefinitionen und Aufrufen spielt eine entscheidende Rolle bei der Handhabung von Variablen Argumente.

**kwargs

Die Syntax

def foo(x, y, **kwargs):
    pass

gibt an, dass die Funktion foo eine beliebige Anzahl von Schlüsselwortargumenten akzeptieren kann. Diese Schlüsselwortargumente werden in einem Wörterbuch namens kwargs gesammelt. Zum Beispiel:

def bar(**kwargs):
    for a in kwargs:
        print(a, kwargs[a])

# Call the function
bar(name='one', age=27)
# Output:
# name one
# age 27

*args

Ähnlich ermöglicht die Syntax

def foo(x, y, *args):
    pass

der Funktion foo, eine beliebige Anzahl von Positionsargumenten zu akzeptieren. Diese Argumente werden in einem Tupel mit dem Namen args.

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

# Call the function
foo(1)
# Output: 1

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

und *-Kombination

Sowohl *kwargs als auch args können zusammen verwendet werden erlauben sowohl feste als auch variable Argumente. Zum Beispiel:

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

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

Extended Iterable Unpacking

Die *-Notation kann auch zum Entpacken von Argumentlisten beim Aufrufen von Funktionen verwendet werden. Zum Beispiel:

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

# Create a list
baz = [1, 2]

# Call the function using unpacking
foo(*baz)
# Output: 1 2

Hinweis: Nur Positionsparameter (Python 3.8)

In Python 3.8 und höher ist es möglich, in einer Funktionsdefinition mithilfe von nur Positionsparameter anzugeben * Notation vor den regulären Parametern:

def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass

Diese Funktion kann nur drei Positionsargumente akzeptieren, und alle zusätzlichen Argumente müssen es sein als Schlüsselwortargumente übergeben.

Einfügereihenfolge für kwargs

In Python 3.6 und höher wird die Reihenfolge der Schlüsselwortargumente im kwargs-Wörterbuch beibehalten. Dies kann in bestimmten Szenarien nützlich sein, beispielsweise wenn Sie die Reihenfolge der an die Funktion übergebenen Argumente beibehalten müssen.

Das obige ist der detaillierte Inhalt vonWie funktionieren *args und kwargs in Python-Funktionsdefinitionen und -Aufrufen?. 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