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?