Python3变量增量和赋值
我正在用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发
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