Запуск кода очистки с помощью наконец

Иногда вы можете захотеть, чтобы что-то происходило независимо от того, какое исключение произошло, например, если вам нужно очистить некоторые ресурсы.

, finally , блок из try пункта будет происходить независимо от того, были ли какие - либо исключения подняли.

 resource = allocate_some_expensive_resource()
try:
    do_stuff(resource)
except SomeException as e:
    log_error(e)
    raise  # re-raise the error
finally:
    free_expensive_resource(resource)

 

Эта модель часто лучше обращаться с менеджерами контекста ( с использованием с утверждением ).