【发布时间】:2013-04-30 20:48:23
【问题描述】:
考虑以下 Python 3 代码:
a = [-1,-1,-1]
i = 0
现在考虑以下两个版本的同时分配 a 和 i:
作业版本 1:
a[i],i = i,i+1
作业版本 2:
i,a[i] = i+1,i
我希望这两个版本的同时分配在语义上是等效的。但是,如果您在每次同时分配后检查 a 和 i 的值,您会得到不同的状态:
分配版本 1 后 print(a,i) 的输出:
[0, -1, -1] 1
分配版本 2 后 print(a,i) 的输出:
[-1, 0, -1] 1
我不是 Python 语义方面的专家,但这种行为看起来很奇怪。我希望这两个分配都表现为分配版本 1。此外,如果您检查以下链接,人们会希望两个分配版本都导致相同的状态:
Link to book excerpt in Google Books
关于同时分配的 Python 语义,我是否遗漏了什么?
注意:这种奇怪的行为似乎无法重现,例如,当变量a 具有整数类型时;它似乎要求a 是列表类型(也许任何可变类型都是这种情况?)。
【问题讨论】:
标签: python variable-assignment semantics simultaneous