python 3生成器中next和for之间的区别?

时间:2016-12-09 07:09:42

标签: python python-3.x

我尝试在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
...

请参阅:nextthis answerthis example

为什么2个结果不同?

1 个答案:

答案 0 :(得分:2)

每次调用int_gen()时,都会创建一个重新启动所有内容的新生成器。如果您希望生成器在停止的位置继续运行,则必须保存它,以便将有用的内容传递给next()

it = int_gen()
print(next(it)) # 2
print(next(it)) # 3
print(next(it)) # 4