Heim >Backend-Entwicklung >Python-Tutorial >Warum unterscheidet sich die Mehrfachzuweisung in Python (x, y = y, x y) von der Einzelzuweisung (x = y; y = x y)?

Warum unterscheidet sich die Mehrfachzuweisung in Python (x, y = y, x y) von der Einzelzuweisung (x = y; y = x y)?

Susan Sarandon
Susan SarandonOriginal
2024-12-15 17:52:10923Durchsuche

Why Does Multiple Assignment in Python (x, y = y, x y) Differ from Separate Assignments (x = y; y = x y)?

Mehrfachzuweisungs- und Auswertungsreihenfolge in Python

In Python ist es so, wenn Mehrfachzuweisungen wie x, y = y, x y verwendet werden Es ist unbedingt erforderlich, die zugrunde liegende Reihenfolge zu verstehen Auswertung.

Frage:

Warum ergeben sich bei der gleichzeitigen Zuweisung mehrerer Werte x, y = y, x y andere Werte als bei der getrennten Zuweisung, d. h. x = y; y = x y?

Antwort:

In Python wird die rechte Seite einer Zuweisungsanweisung vollständig ausgewertet, bevor eine Variableneinstellung erfolgt. Dies impliziert, dass in x, y = y, x y die folgenden Schritte stattfinden:

  1. y wird als Ham ausgewertet und gespeichert.
  2. x y wird als Spam ausgewertet und gespeichert.
  3. x ist auf Ham eingestellt.
  4. y ist auf eingestellt Spam.

Im Grunde ist es äquivalent zu:

ham = y
spam = x + y
x = ham
y = spam

Andererseits gilt in x = y; y = x y, die Schritte sind:

  1. y wird auf x gesetzt.
  2. x y wird als y y ausgewertet und auf y gesetzt.

Dies ergibt sich wobei x auf den ursprünglichen Wert von y und y auf die Summe der ursprünglichen Werte von x und y gesetzt wird.

Das obige ist der detaillierte Inhalt vonWarum unterscheidet sich die Mehrfachzuweisung in Python (x, y = y, x y) von der Einzelzuweisung (x = y; y = x y)?. 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