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)
,然后将其解压缩为 x
和 y
。
另请参阅如果左侧不仅有标识符而且还有表达式,会发生什么:
>>> a = [1, 2]
>>> i = 1
>>> a[i], i = 3, 4
>>> a, i
([1, 3], 4)
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)
,然后将其解压缩为 x
和 y
。
另请参阅如果左侧不仅有标识符而且还有表达式,会发生什么:
>>> a = [1, 2]
>>> i = 1
>>> a[i], i = 3, 4
>>> a, i
([1, 3], 4)