您的问题是,当您分配 时b = a + b,您已经将 的值更新a为 的旧值b。因此,您有效地分配了b = b + bor 2*b,这就是您得到0, 1, 2, 4, 8, ...结果的原因。您可以通过同时分配a和来解决这个问题:b
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
fib=fibonacci()
for i in range(10):
print(next(fib))
Run Code Online (Sandbox Code Playgroud)
输出:
0
1
1
2
3
5
8
13
21
34
Run Code Online (Sandbox Code Playgroud)