Python3变量增量和赋值

时间:2018-07-15 20:01:42

标签: python python-3.x

我正在用python3编写这个斐波那契生成器函数:

def fibo(n):
    a = b = 1

    for i in range(n): 
        yield a
        a,b = b,a + b

for x in fibo(10):
    print(x)

以上代码给出: 1个 1个 2 3 5 8 13 21 34 55

但是

def fibo(n):
    a = b = 1

    for i in range(n): 
        yield a
        a = b
        b = a + b

for x in fibo(10):
    print(x)

上面的代码给出:1 1个 2 4 8 16 32 64 128 256

唯一的区别是在第一行代码的同一行上将b分配给a,将a+b分配给b。这如何影响输出?

1 个答案:

答案 0 :(得分:1)

在第二个代码示例中,这两行代码

a = b
b = a + b

具有以下效果:

  1. b分配给a
  2. a+b分配给b,由于a等于b,所以与将b+b分配给b相同(或将b加倍)< / li>

因此,结果是每个产量都是您在样本输出中显示的产量的两倍。

在第一个示例中,您使用元组打包一次分配a和b,并且=右侧的所有内容都在每次分配之前求值。