Mit
Code: Alles auswählen
try:
... yield ...
finally:
aufräum()
Wird der aus dem Funktionsaufruf resultierende Generator aber nie angefasst, wird der `finally`-Block natürlich nicht ausgeführt -- kennt jemand eine elegante Möglichkeiten, in diesem Fall Aufräumarbeiten zu erledigen?
Code: Alles auswählen
def somegen():
try:
... yield ...
finally:
aufräum()
somegen() # Generator wird nicht "angestoßen"
Edit: was natürlich geht, ist, das Teil zu wrappen, was aber voraussetzt, dass ich die Aufräumarbeiten außerhalb der Generatorfunktion machen kann. Das würde ich gerne vermeiden.