【发布时间】:2016-02-23 11:13:24
【问题描述】:
我知道 Python 中多重赋值的基本规则:
- 首先计算赋值右侧的所有表达式
- 然后评估值绑定到左侧的变量
但实际上我遇到了一些完全不同且更复杂的事情;我想知道我是否可以依赖它。在调试一个算法的时候,突然发现一个bug和这行有关:
k[s], k[p] = k[p], None
因为我的算法发现了s 和p 相等的情况。显然在这种情况下,最终值是k[s]=k[p]=None。
在那种非常具体的情况下,我更希望得到以下结果:
k[p], k[s] = None, k[p]
即使在p == s 时,它在所有情况下都按照我的意愿行事。在这种情况下,显然k[p] 最初取值None,然后取回值k[p]。
当然,我知道为了获得更易读的代码而多做一次测试可能是个好主意,但我很想知道在那个鲜为人知的情况下语言的政策:当同一个变量在多次赋值中受到两次影响时会发生什么?
【问题讨论】:
标签: python variables operator-precedence