Czy istnieje funkcja Pythona, która sprawdza, czy generator jest uruchomiony?
Próbuję zdefiniować funkcję generatoramycount()
które można zresetować za pomocą funkcji generatorasend(0)
jak w poniższym przykładzie. Wszystko działa dobrze, chyba że używamsend(0)
na nowym obiekcie generatora, który jeszcze się nie rozpoczął. W tym przypadku dajeTypeError
. Czy jest jakaś funkcja, która sprawdza, czy generator się uruchomił, czy muszę złapaćTypeError
i utwórz nowy obiekt generatoramycount(0)
W takim wypadku?
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