Python(Fibo系列):试图理解a,b = b,a + b OR a = b&a = a + b之间的区别是什么

aio*_*cle 4 python python-3.x

我不确定这个问题的适当方向是什么,这也是一个重复的问题.所以请相应指导.

我是python编程的新手.我有这个简单的代码来生成Fibonacci系列.

1: def fibo(n):
2:    a = 0
3:    b = 1
4:    for x in range(n):
5:        print (a, end=' ')
6:        #a, b = b, a+b
7:        a = b
8:        b = a+b
9:    print()
10: num = int(input("enter n value: "))
11: print(fibo(num))
Run Code Online (Sandbox Code Playgroud)

如果我按原样执行上面的代码,我得到的结果如下

enter n value: 10
0 1 2 4 8 16 32 64 128 256 
Run Code Online (Sandbox Code Playgroud)

如果取消注释#6和注释行#7和#8,我得到的结果是实际的fibo系列.

enter n value: 10
0 1 1 2 3 5 8 13 21 34 
Run Code Online (Sandbox Code Playgroud)

我想知道它们之间有什么区别

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

a = b
b = a + b
Run Code Online (Sandbox Code Playgroud)

使用的编程IDE:PyCharm Community 2017.3

dde*_*mez 6

a = b
b = a + b
Run Code Online (Sandbox Code Playgroud)

实际上是:

a = b
b = b + b
Run Code Online (Sandbox Code Playgroud)

你想要的是:

a = b
b = old_value_of_a + b
Run Code Online (Sandbox Code Playgroud)

当你这样做时 a, b = b, a + b ,确实在做:

tmp_a = b
tmp_b = a + b
a = tmp_a
b = tmp_b
Run Code Online (Sandbox Code Playgroud)

这就是你想要的