Heim >Backend-Entwicklung >Python-Tutorial >Wie wirkt sich die Mehrfachzuweisung von Python auf die Reihenfolge der Variablenauswertung aus?

Wie wirkt sich die Mehrfachzuweisung von Python auf die Reihenfolge der Variablenauswertung aus?

Susan Sarandon
Susan SarandonOriginal
2024-12-16 14:43:10617Durchsuche

How Does Python's Multiple Assignment Affect Variable Evaluation Order?

Mehrfachzuweisungs- und Auswertungsreihenfolge in Python

In Python sind Mehrfachzuweisungen eine gängige Praxis, bei der mehreren Variablen gleichzeitig Werte zugewiesen werden. Allerdings kann die Reihenfolge der Auswertung bei solchen Aufgaben unerwartete Konsequenzen haben.

Das Problem

Bedenken Sie den folgenden Code:

>>> x = 1
>>> y = 2
>>> x, y = y, x + y  # Multiple assignment

Danach Zuweisung, die Werte von x und y sind:

>>> x
2
>>> y
3

Dies unterscheidet sich von dem, was man erwarten könnte, wenn die Zuweisungen erledigt wären separat:

>>> x = 1
>>> y = 2
>>> x = y  # Assign x to the current value of y
>>> y = x + y  # Assign y to the sum of x and y
>>> x
2
>>> y
4

Die Erklärung

Der Unterschied ergibt sich aus der Reihenfolge der Auswertung in Zuordnungsanweisungen. In Python wird zuerst die rechte Seite einer Zuweisung ausgewertet, bevor die eigentliche Zuweisung zu den Variablen erfolgt.

Im ersten Beispiel, wenn wir x, y = y, x y zuweisen, ist die rechte Seite Die Handseite wird wie folgt ausgewertet:

ham = y  # Where ham = 2
spam = x + y  # Where spam = 1 + 2 = 3

Dann wird x der Wert von Ham (2) und y der Wert von Spam (3) zugewiesen. Aus diesem Grund erhalten wir das Ergebnis x = 2 und y = 3.

Im Gegensatz dazu wird im zweiten Beispiel x zunächst der Wert von y zugewiesen, der 2 ist. Anschließend wird y die Summe von zugewiesen x (2) und y (2), was 4 ergibt.

Das obige ist der detaillierte Inhalt vonWie wirkt sich die Mehrfachzuweisung von Python auf die Reihenfolge der Variablenauswertung aus?. 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