def func():
for i in range(5):
yield i
for i in range(5):
print(next(func())
"""
0
0
0
0
0
"""
fun=func()
for i in range(5):
print(next(fun)
"""
0
1
2
3
4
"""
如果直接对生成器进行next操作的话,每次输出的值都是一样的,因为每一次next操作都会重新遍历一次func(),如果先对func()进行调用的话,每一次next操作都是在同一次遍历中进行。