我对以下内容感到困惑:
这有效:
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
虽然我预计两者都是完全相同的。
有人可以对此嗤之以鼻吗?
答案 0 :(得分:10)
没有。在
a, b = b, a%b
首先将右侧评估为元组,因此使用a%b
的原始值计算a
。相比之下,
a = b; b = a%b
a%b
在 a
之后计算,因为已为b
分配值,为b
分配了不同的结果。