J'aimerais une fonction, is_just_started
, qui se comporte comme suit:
>>> def gen(): yield 0; yield 1
>>> a = gen()
>>> is_just_started(a)
True
>>> next(a)
0
>>> is_just_started(a)
False
>>> next(a)
1
>>> is_just_started(a)
False
>>> next(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>> is_just_started(a)
False
Comment puis-je mettre en œuvre cette fonction?
J'ai regardé l' .gi_running
d'attribut, mais il semble être utilisé pour autre chose.
Si je sais que la première valeur qui doit être envoyé dans le générateur, je peux faire quelque chose comme ceci:
def safe_send(gen, a):
try:
return gen.send(a)
except TypeError as e:
if "just-started" in e.args[0]:
gen.send(None)
return gen.send(a)
else:
raise
Toutefois, cela semble aberrant.