我们知道,如果一个函数定义中包含yield关键字,那么这个函数就是一个generator。
如下面的gene()就是一个generator:
def gene():
i=1
while True:
yield i
i+=1
但是,如果想用next()函数不断获得这个generator的下一个返回值,不能直接next(gene())
,必须先生成一个generator对象,再用next()函数。
正确写法为:
def gene():
i=1
while True:
yield i
i+=1
g=gene() # 先生成一个generator对象
print(next(g))
如果直接next(gene()),一直输出生成器的第一个元素。