Пишем контекстные менеджеры в python
Контекстный менеджер в python - это объект, определяющий, что должно быть сделано "До" и "После" тела with выражения. Чаще всего контекстные менеджеры используют для управления ресурсами, получение и освобождение. Тема хорошо объясняется на следующем, довольно распространённом, примере с функцией open.
Допустим, нам необходимо открыть, прочитать и закрыть файл. Причём закрытие файла должно быть гарантированным: