Heim  >  Artikel  >  Backend-Entwicklung  >  Wozu dienen die Parameter ** und * in Python?

Wozu dienen die Parameter ** und * in Python?

silencement
silencementOriginal
2019-05-23 14:52:474951Durchsuche

In Python gibt der Parameter „**“ an, dass hier eine beliebige Anzahl von Schlüsselwortparametern akzeptiert wird. Diese Parameter werden in Form eines Wörterbuchs gespeichert, das als „*“-Parameter interpretiert wird Gibt an, dass hier eine beliebige Anzahl von Schlüsselwortparametern akzeptiert wird. Diese Parameter werden in Form eines Arrays gespeichert, dh sie werden als Tupel interpretiert.

Wozu dienen die Parameter ** und * in Python?

Der Parameterübergabemechanismus von Python umfasst die Wertübergabe (int, float und andere Wertdatentypen) und die Referenzübergabe (Nichtwertobjektdatentypen wie Wörterbücher und Listen). ). Stellt zwei grundlegende Mechanismen und die praktische Schlüsselwortübertragungsfunktion dar (verwenden Sie direkt den formalen Parameternamen der Funktion, um das Übertragungsziel der tatsächlichen Parameter anzugeben. Die Funktion ist beispielsweise als def f(a,b,c) definiert. , dann f( kann beim Aufruf von b = 1, c = 2, a = 3 verwendet werden) gibt die Übertragungsmethode des formalen Parameterziels an, ohne sich an die Positionskorrespondenz zwischen formalen Parametern und tatsächlichen Parametern wie der C-Sprache halten zu müssen.) Darüber hinaus ermöglicht Python auch die Parameterübergabe von Wrapping-Methoden, die die Grundlage für Funktionsaufrufe mit ungewisser Anzahl und Art von Parametern bilden.

Zum Beispiel: def f(*a,**b), die Implementierung der umschlossenen Parameterübertragung besteht darin, beim Definieren der Funktion * oder ** vor dem formalen Parameter hinzuzufügen und den entsprechenden formalen Parameter zu verwenden * (wie oben a) wird als Tupel interpretiert, und der formale Parameter, der ** (wie oben b) entspricht, wird als Wörterbuch interpretiert. Informationen zur spezifischen Parameterübertragung während des Aufrufs finden Sie im folgenden Code:

Wozu dienen die Parameter ** und * in Python?

Das Ergebnis der Ausführung des obigen Codes ist:

(3, 4)
{'n': 2, 'm': 1 }
Sichtbar, denn nicht mit Schlüsselwörtern übergebene Variablen werden als Teil des Tupels an *a übergeben, während mit Schlüsselwörtern übergebene Variablen als Teil des Wörterbuchs an **b übergeben werden

Eine knifflige Stelle. Python schreibt vor, dass von Nicht-Schlüsselwörtern übergebene Variablen vor den von Schlüsselwörtern übergebenen Variablen geschrieben werden müssen. Wenn Sie also * und ** zusammen verwenden, muss der formale Parameter * vor dem formalen Parameter ** stehen

Darüber hinaus gibt es beim Aufruf der Funktion eine Methode namens Unwrapping:

Wozu dienen die Parameter ** und * in Python?

Die Ausgabe des obigen Codes ist dieselbe wie die vorherige 1. Wenn eine Gruppe oder ein Wörterbuch als Parameter übergeben wird und Sie die formale Parameterdefinition in der umschlossenen Form anpassen möchten (z. B. oben h an *a und k an **b übergeben), verwenden Sie * für Tupel und * * für Wörterbücher.“ „Unwrap“ kann übergeben werden.

Tatsächlich dient die Verwendung von * beim Aufruf von f dazu, Python daran zu erinnern: Ich möchte den tatsächlichen Parameter h in zwei verstreute Elemente c und d aufteilen und diese übergeben separat (Es ist auch möglich, f im obigen Code als def f(arg1, arg2, **b) zu definieren, sodass arg1 den Wert 3 und arg2 den Wert 4 erhält) **Das Gleiche gilt beim Entpacken . *Dies gilt auch für Listen ([] definiert Listen, () definiert Tupel).

Das obige ist der detaillierte Inhalt vonWozu dienen die Parameter ** und * in Python?. 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

In Verbindung stehende Artikel

Mehr sehen