单个和多个任务之间的差异

时间:2016-02-18 15:15:27

标签: python python-3.x

我想在Python 3.5中计算Fibonacci系列 如果我这样做:

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

我得到了正确的结果,但如果我这样做:

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

它根本不起作用。 这是为什么?

3 个答案:

答案 0 :(得分:2)

当你这样做时

a = b
b = a + b

然后,a的分配首先执行 然后分配到b,但此时{{1}已经有了一个新值。实际上,这与

相同
a

使用&#34;双重赋值&#34;,两个变量同时更新

a = b
b = b + b # now a is the same as b

这会将元组a, b = b, a + b 分配给元组(b, a + b),使用元组解包将值分发到(a, b)a。你可以认为这大致相当于

b

答案 1 :(得分:0)

在第一次迭代中,a的值更改为1,其计算b的方式与第二次中的方式不同,其中a + b = 2.在第一个示例中,a + b = 1.至少,这是&#39; s它对我来说是什么样的。

答案 2 :(得分:0)

首先,在第一次运行期间循环内部,

a, b = 1, 0+1

将a和b引导为1和1

在第二个例子中,

a = 1
b = 1 + 1
将a和b引导为1和2

不同之处在于,在第二个实例中,您使用已更新的a值更新b的值。而在第一个实例中,您使用旧的值来更新b的值。