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

tag*_*oma 3 python syntax loops python-2.7

我对以下内容感到困惑:

这有效:

a, b = 1071, 1029
while(a%b != 0):
    a, b = b, a%b
Run Code Online (Sandbox Code Playgroud)

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

a, b = 1071, 1029
while(a%b != 0):
    a = b; b = a%b
Run Code Online (Sandbox Code Playgroud)

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

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

che*_*ner 12

不,在

a, b = b, a%b
Run Code Online (Sandbox Code Playgroud)

右侧首先被评估为元组,因此a%b使用原始值计算a.相反,

a = b; b = a%b
Run Code Online (Sandbox Code Playgroud)

a%b在分配了值之后 计算,a为其分配b不同的结果b.