所有功劳归@MarkDickinson,后者在评论中回答了此问题:
请注意+
in中(target_list "=")+
,它表示一个或多个副本。在中foo = bar = 5
,有两个(target_list "=")
作品,而expression_list
部分只是5
赋值语句中的所有target_list
产生式(即看起来像的东西foo =
)在被评估expression_list
后,expression_list
会从左到右分配到语句的右端。
当然,通常的“ tuple-unpacking”赋值语法也可以在这种语法下工作,让您可以执行以下操作
>>> foo, boo, moo = boo[0], moo[0], foo[0] = moo[0], foo[0], boo[0] = [0], [0], [0]
>>> foo
[[[[...]]]]
>>> foo[0] is boo
True
>>> foo[0][0] is moo
True
>>> foo[0][0][0] is foo
True