我有一个函数,可以在下载结果时产生结果。出于这个问题的目的,可以说我每秒产生一次刺痛,但我希望使用便利函数来包装我的发生器:
import time
def GeneratorFunction(max_val):
for i in range(0,5):
time.sleep(1)
yield "String %d"%i
def SmallGenerator():
yield GeneratorFunction(3)
for s in SmallGenerator():
print s
...为什么不只打印我期望的5个字符串?相反,它似乎返回了生成器函数:
<generator object GeneratorFunction at 0x020649B8>
我怎样才能像普通的生成器函数那样产生字符串呢?
不能相信我错过了;答案是简单地返回生成器函数并应用适当的参数:
import time
def GeneratorFunction(max_val):
for i in range(0,max_val):
time.sleep(1)
yield "String %d"%i
def SmallGenerator():
return GeneratorFunction(3) # <-- note the use of return instead of yield
for s in SmallGenerator():
print s
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句