[我知道,与this相比,以下是斐波那契生成器的次佳实现,但我似乎无法理解为什么它无法按预期运行:
def fibonacci_sequence():
fl, fp = 1, 1
while True:
yield (fl + fp)
store = fl + fp
fp = fl
fl = store
for i in range(10):
print(next(fibonacci_sequence()))
它一直保持打印2。
是否在每次迭代中都在yield
关键字下更新了生成器的状态?
fib = fibonacci_sequence()
for i in range(10):
print(next(fib)) # keep calling next on the same generator object
要从头开始生成整个序列,您可能需要yield fp
而不是yield (fl + fp)
。