【发布时间】:2017-05-30 10:49:18
【问题描述】:
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'
print(next(fib(6)))
print(next(fib(6)))
print(next(fib(6)))
结果是1,1,1。
但是,如果我将print() 中的内容更改如下:
f = fib(6)
print(next(f))
print(next(f))
print(next(f))
结果将是1, 1, 2。为什么会这样?
【问题讨论】:
-
请修正缩进。
-
请张贴实际缩进?
-
您每次都创建新的生成器。您确实看到了这种差异,不是吗?
-
您可能还想删除退货声明后的“完成”...
-
@Rawing 感谢您的建议。感谢 Jim 已经帮助我改进了我的问题。下次我会注意的:)
标签: python python-3.x generator