我有这个生成器功能:-
def gen():
for i in range(3):
yield i*i
现在当我打电话时next()
on gen()
,它每次都给出第一个元素。
>>> next(gen())
0
>>> next(gen())
0
但是当我在一个for
循环,它按预期工作:
>>> for i in gen():
... print(i)
...
0
1
4
有人可以解释这种效果的原因以及我在这里缺少的概念吗?
每次调用时,您的函数都会返回一个新的生成器gen()
.
我认为最简单的理解方法就是对比你正在做的事情:
>>> next(gen())
0
>>> next(gen())
0
有了这个:
>>> my_gen = gen()
>>> next(my_gen)
0
>>> next(my_gen)
1
>>> next(my_gen)
4
>>> next(my_gen)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
在后一种情况下,我从same发电机。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)