【发布时间】:2015-06-16 16:46:23
【问题描述】:
所以我有一个生成器函数,看起来像这样。
def generator():
while True:
for x in range(3):
for j in range(5):
yield x
在我加载这个函数并多次调用“next”之后,我希望它能够产生值
0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 0 0 0 0 0 ...
但它总是产生 0。这是为什么呢?
>>> execfile("test.py")
>>> generator
<function generator at 0x10b6121b8>
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
>>> generator().next()
0
【问题讨论】:
-
我不明白为什么它如此特别。如果您要重新实例化某个类,那么当某种初始值没有更新时,没有人会感到惊讶!例如。在一个文件中加载 10 次并执行
next()和print肯定不会那么壮观,需要 14 个赞成票和 2 个收藏夹...... -
简短回答,每个
generator()调用都会返回一个从其开头开始的新生成器对象。试试gen = generator(),然后是gen.next(),gen.next(),等等。