【发布时间】:2013-07-15 03:03:59
【问题描述】:
我尝试定义一个生成器函数mycount(),它可以使用生成器函数send(0) 重置,如下例所示。一切正常,除非我在尚未启动的新生成器对象上使用send(0)。在这种情况下,它会给出TypeError。是否有任何函数可以检查生成器是否已启动,或者在这种情况下我是否必须捕获TypeError 并使用mycount(0) 创建一个新的生成器对象?
def mycount(value):
while True:
v = yield value
if v == None:
value = value + 1
else:
value = v
g = mycount(3)
print(next(g)) # prints 3
print(next(g)) # prints 4
print(g.send(0)) # prints 0
print(next(g)) # prints 1
print(next(g)) # prints 2
g2 = mycount(3)
g2.send(0)
# TypeError: can't send non-None value to a just-started generator
【问题讨论】: