我道歉,因为这可能是一个常见的问题,但我想我正在寻找一个在其他主题中找不到的非常具体的答案。基本上,我对添加数字的流程感到很困惑。这里有两个类似的代码,可以不同地计算数字这有什么简单的解释吗?
>>> a = 0
>>> b = 1
>>> while b <1000:
print b
a, b = b, a+b
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987
>>> a =0
>>> b=1
>>> while b<1000:
print b
a = b
b = a+b
1,2,4,8,16,32,64,128,256,512
答案 0 :(得分:1)
不同之处在于交换时的值是什么
a, b = b, a+b
将a设置为b并将a设置为a + b但是交换是相对同时完成的,因此它不是有序的,即b的变化不考虑a先被改变。
在第二个例子中
a = b
b = a+b
更改值,第二个语句尊重第一个
的更改答案 1 :(得分:1)
交换存在优先区别。 在第一个示例中,您要分配: a = 1 b = 1
在第二个示例中,您要分配: a = 1 b = 2
为了实现与第一个例子相同的操作顺序,你必须使用temp var。
答案 2 :(得分:0)
分配在第一个代码示例中同时发生,在第二个代码中连续发生,导致不同的答案。