Python多变量赋值混乱



我在Python的第一天就被一个很短的例子弄糊涂了。希望有人能解释一下为什么这几个版本之间有一些差异。请

V1:输出为1、1、2、3、5、8

a, b = 0, 1
while b < 10:
    print(b)
    a, b = b, a+b

V2:输出为1、2、4、8

a, b = 0, 1
while b < 10:
    print(b)
    a = b
    b = a+b

在第一个版本中,首先计算右手,因此添加b时不会增加。

要逐步通过第一个版本进行几次迭代:

1.

a = 0
b = 1
a, b = 1, 1  # b is 1, and a is 0

2.

a = 1
b = 1
a, b = 1, 2  # b is 1 and a is 1

3.

a = 1
b = 2
a, b = 2, 3  # b is 2 and a is 1

在第二个版本中,b是在添加之前分配的,所以第二个版是这样的:

1.

a = 0
b = 1
a = b  # a is now 1.
b = a + b  # b is now 2, because both a and b are 1.

2.

a = 1
b = 2
a = b  # a is now 2.
b = a + b  # b is now 4, because both a and b are 2.

最新更新