Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
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