Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3变量增量和赋值_Python_Python 3.x - Fatal编程技术网

Python3变量增量和赋值

Python3变量增量和赋值,python,python-3.x,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 五十五 但是, 上述代码给出:1 1. 2. 4. 8. 16 32 64 128 256 唯一的区别是将b分配给a和a+b分配给b发

我正在用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 五十五

但是,

上述代码给出:1 1. 2. 4. 8. 16 32 64 128 256


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

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

a = b
b = a + b
具有以下效果:

  • b
    分配给
    a
  • a+b
    分配给
    b
    ,由于a等于b,这与将
    b+b
    分配给
    b
    相同(或加倍
    b
  • 因此,效果是每个产量都是前一个产量的两倍,您已经在示例输出中显示了这一点


    在第一个示例中,您使用元组打包同时分配a和b,并且在每次分配之前对
    =
    右侧的所有内容进行评估。

    您确实意识到
    a=b
    会影响
    b=a+b
    a
    的值?而在
    a,b=b,a+b
    中,
    a
    的值在评估
    a+b
    后会发生变化?@MisterMiyagi为什么评估a+b后a的值会发生变化?请解释一下,“=右侧的所有内容都是在每次作业之前评估的”-这是我不知道的。谢谢。
    a = b
    b = a + b