Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
from contextlib import ExitStack
with ExitStack() as stack:
f = stack.enter_context(open('file.txt', 'w)) # <- интеграция с другими контекст-менеджерами
stack.callback(print, "Defer called") # <- обычный коллбэк
@stack.callback # <- так тоже можно добавить коллбэк
def my_defer():
recover()
print("Ok )")
raise Exception("WTF?")
print("Never printed (((")
defer лучше исключений в контексте Python? В вашем примере было бы логичнее использовать with open(...) as f:.
Обработка ошибок в стиле panic/defer на Python