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
Freigeben: 2024-12-26 05:17:12
Original
838 Leute haben es durchsucht

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

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

*args

Ähnlich ermöglicht die Syntax

def foo(x, y, *args):
    pass
Nach dem Login kopieren

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

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

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

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

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!

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