Python 多重赋值真的是从右到左的吗?

Is Python multiple assignment really right-to-left?

x = 1
y = 2

x, y = y, x + y
print(x, y)

上面这块打印出我:2, 3

有关此主题的 Python 文档和之前的 Whosebug 问题解答表明赋值是从右到左的。

所以在我的例子中,y = x + y 先行 -> y = 3,然后 x = y 第二 -> x = 3,输出应该是:3, 3

如果赋值是从左到右,那么结果输出应该是:2, 4

所以从左到右和从右到左在这里都不起作用,好像是同时完成的。我的解释器版本是 3.8

请帮帮我。谢谢!

赋值的右侧在赋值发生之前全部计算。

因此,首先计算 (y, x+y),即 (2, 3),然后将其解压缩为 xy

另请参阅如果左侧不仅有标识符而且还有表达式,会发生什么:

>>> a = [1, 2]
>>> i = 1
>>> a[i], i = 3, 4
>>> a, i
([1, 3], 4)