我尝试在python 3中理解生成器。我尝试以下代码:
def int_gen():
"""Infinite integer generator"""
n = 1
while True:
n = n + 1
yield n
print(next(int_gen())) # 2
print(next(int_gen())) # 2
print(next(int_gen())) # 2
然而,在这种情况下:
for i in int_gen():
print(i)
我预期的结果:
2
3
4
...
请参阅:next
,this answer和this example
为什么2个结果不同?
答案 0 :(得分:2)
每次调用int_gen()
时,都会创建一个重新启动所有内容的新生成器。如果您希望生成器在停止的位置继续运行,则必须保存它,以便将有用的内容传递给next()
。
it = int_gen()
print(next(it)) # 2
print(next(it)) # 3
print(next(it)) # 4