Python:a,b = 1,2和a = 1; b = 2是否严格等价?

时间:2014-09-21 16:44:47

标签: python python-2.7 loops syntax

我对以下内容感到困惑:

这有效:

a, b = 1071, 1029
while(a%b != 0):
    a, b = b, a%b

但是,以下代码段会返回 ZeroDivisionError 错误消息:

a, b = 1071, 1029
while(a%b != 0):
    a = b; b = a%b

虽然我预计两者都是完全相同的。

有人可以对此嗤之以鼻吗?

1 个答案:

答案 0 :(得分:10)

没有。在

a, b = b, a%b

首先将右侧评估为元组,因此使用a%b的原始值计算a。相比之下,

a = b; b = a%b

a%ba之后计算,因为已为b分配值,为b分配了不同的结果。