ciao lista!
ho una domanda sui generatori
Mi farebbe molto comodo usare la possibilità di mandare una eccezione ad un
generatore: ma mi trovo con un comportamento imprevisto
Qui sotto trovate un frammento di codice che riproduce una sorta di "caso
minimo" di quella che mi sembra una anomalia
Se avete voglia di provarlo credo che il codice sia più o meno
autoesplicativo.
Quello che mi lascia perplesso è: perché il generatore, dopo aver gestito
l'eccezione, non riparte dal restituire il valore "A"?

---><--- begin test_gen.py ---><---
def gen():
    while True:
        try:
            yield "A"
            yield "B"
            yield "C"
        except Exception as ex:
            print("catched exception", ex)


g = gen()
you_can_specify_any_number_of_steps = 3
for idx in range(you_can_specify_any_number_of_steps):
    print("result:", g.send(None))
print("throw...")
g.throw(Exception("BOOM"))
print("result:", g.send(None), "*** I was expecting A and I get B, why?!?
***")
print("result:", g.send(None))

---><--- end test_gen.py ---><---
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

Rispondere a