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