Ton*_*nen 3 python generator variable-assignment slice lazy-sequences
当发电机没有完成值并且已经读取了所有需要的结果时,有没有办法停止屈服?我的意思是生成器在没有做StopIteration的情况下提供值.
例如,这永远不会停止:(已修订)
from random import randint
def devtrue():
while True:
yield True
answers=[False for _ in range(randint(100,100000))]
answers[::randint(3,19)]=devtrue()
print answers
Run Code Online (Sandbox Code Playgroud)
我找到了这段代码,但还不明白,在这种情况下如何应用它:http: //code.activestate.com/recipes/576585-lazy-recursive-generator-function/
您可以调用close()生成器对象.这样,GeneratorExit在生成器中引发异常,并且对其next()方法的进一步调用将引发StopIteration:
>>> def test():
... while True:
... yield True
...
>>> gen = test()
>>> gen
<generator object test at ...>
>>> gen.next()
True
>>> gen.close()
>>> gen.next()
Traceback (most recent call last):
...
StopIteration
Run Code Online (Sandbox Code Playgroud)