(不要擔心,這是不是拆包元組的另一個問題。)Python進行多種賦值語句在一行
在蟒蛇,就像foo = bar = baz = 5
聲明分配變量富,酒吧和巴茲5。它由左到右分配這些變量,可以通過厲害的例子一樣
>>> 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
證明但python language reference指出賦值語句的形式爲
(target_list "=")+ (expression_list | yield_expression)
並首先評估expression_list
,然後進行分配。
那麼foo = bar = 5
行怎麼能有效,因爲bar = 5
不是expression_list
?這些多行分配如何在一行中得到解析和評估?我閱讀語言參考錯誤嗎?
注意'(target_list「=」)+'中的'+',表示一個或多個副本。在'foo = bar = 5'中,有兩個((target_list「=」)產品,而'expression_list'部分只是'5'。 –
啊哈!這就是我所錯過的。如果你讓這個答案我可以接受。謝謝! – mwcvitkovic