from contextlib import contextmanager
@contextmanager
def context():
print "entering"
yield
print "exiting"
def test():
with context():
for x in range(10):
yield x
for x in test():
if x == 5:
break # or raise
output:
entering
Есть ли способ сделать python автоматически вызывает метод __ exit __
в context (), когда цикл for
прерывается? Или каким-то другим способом достичь той же цели? То, что я знаю о генераторах и менеджерах контекста, заставляет меня подозревать, что это невозможно, но это делает менеджеры контекста бесполезными внутри генераторов, не так ли? Мне кажется, что оператор yield
внутри блока с
должен вызвать красный флаг, диспетчер контекста __ exit __
может не работать . . 11142699]