Ist es ratsam, mit Anweisungen in Generatoren zu verwenden?

Betrachten Sie den folgenden Python-Code:

def values():
    with somecontext():
        yield 1
        yield 2
for v in values():
    print(v)
    break

Gewährleistet Python in diesem Fall, dass der Generator ordnungsgemäß geschlossen ist und der Kontext somit beendet wird?

Ich weiß, dass dies in der Praxis in CPython der Fall sein wird, da die Referenzzählung und der Generator eifrig zerstört werden, aber garantiert Python dieses Verhalten? Mir ist aufgefallen, dass es in Jython in der Tat nicht funktioniert. Sollte dies als Fehler oder zulässiges Verhalten angesehen werden?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage