Python Multiple Assignment Statements in einer Zeile

(Keine Sorge, dies ist keine andere Frage zum Auspacken von Tupeln.)

In Python, eine Anweisung wiefoo = bar = baz = 5 ordnet die Variablen foo, bar und baz 5 zu. Es ordnet diese Variablen von links nach rechts zu, wie böse Beispiele wie @ beweisen könne

>>> foo[0] = foo = [0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined
>>> foo = foo[0] = [0]
>>> foo
[[...]]
>>> foo[0]
[[...]]
>>> foo is foo[0]
True

Aber diepython Sprachreferenz gibt an, dass Zuweisungsanweisungen die Form @ hab

(target_list "=")+ (expression_list | yield_expression)

und bei Zuweisung dasexpression_list wird zuerst ausgewertet und dann erfolgt die Zuweisung.

So wie kann die Liniefoo = bar = 5 gültig sein, vorausgesetzt, dassbar = 5 ist keinexpression_list? Wie werden diese Mehrfachzuweisungen in einer Zeile analysiert und ausgewertet? Lese ich die Sprachreferenz falsch?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage