Heim >Backend-Entwicklung >Python-Tutorial >Wie werden Argumente in Python-Funktionsaufrufen * und entpackt?

Wie werden Argumente in Python-Funktionsaufrufen * und entpackt?

DDD
DDDOriginal
2024-12-22 09:01:13413Durchsuche

How Do * and  Unpack Arguments in Python Function Calls?

Argumente mit und in Python-Funktionsaufrufen entpacken*

In Python-Funktionsaufrufen ist das Sternchen ( ) und Doppel-Sternchen-Operatoren (*) spielen eine wichtige Rolle beim Entpacken von Sequenzen und Wörterbüchern in Positions- oder benannte Operatoren Argumente.

Einzelner Stern (*) Entpacken:

Der einzelne Sternchenoperator (*) entpackt eine Sequenz oder Sammlung in Positionsargumente. Betrachten Sie die folgende Funktion:

def add(a, b):
    return a + b

Gegeben ein Tupel mit Werten = (1, 2), können wir das Tupel entpacken und seine Elemente mit dem *-Operator an die Add-Funktion übergeben:

s = add(*values)

Dies entspricht dem Schreiben:

s = add(1, 2)

Doppelstern () Auspacken:**

Der doppelte Sternchenoperator (**) folgt einem ähnlichen Prinzip, arbeitet jedoch mit Wörterbüchern. Es entpackt die Schlüssel-Wert-Paare eines Wörterbuchs in benannte Argumente:

values = { 'a': 1, 'b': 2 }
s = add(**values)

Dies entspricht:

s = add(a=1, b=2)

Kombiniertes Entpacken:

Beide Operatoren können gleichzeitig in einem einzigen Funktionsaufruf verwendet werden. Zum Beispiel mit der Funktion:

def sum(a, b, c, d):
    return a + b + c + d

Und zwei Sätzen von Werten:

values1 = (1, 2)
values2 = { 'c': 10, 'd': 15 }

Wir können diese Werte wie folgt entpacken:

s = add(*values1, **values2)

Das ist entspricht:

s = sum(1, 2, c=10, d=15)

Leistung Auswirkungen:

Die Verwendung der Entpackoperatoren und * hat im Allgemeinen nur minimale Auswirkungen auf die Leistung. Wenn jedoch die zu entpackende Sequenz oder das zu entpackende Wörterbuch groß ist, kann beim Entpacken ein zusätzlicher Aufwand entstehen. Dies ist für die meisten praktischen Szenarien vernachlässigbar.

Äquivalente Methode:

Alternativ zur Verwendung der Entpackoperatoren können Sie auch die Syntax *args und **kwargs verwenden bzw.:

def add(*args, **kwargs):
    s = 0
    for arg in args:
        s += arg
    for key, value in kwargs.items():
        s += value

Letztendlich ist die Wahl zwischen der Verwendung der Entpackoperatoren oder *args/**kwargs hängt von Ihrem Codestil und Ihren Vorlieben ab.

Das obige ist der detaillierte Inhalt vonWie werden Argumente in Python-Funktionsaufrufen * und entpackt?. 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