Вопрос с собеседования. Как работает with в Python и как написать свой контекстный менеджер
Контекстные менеджеры - это способ гарантированно освободить ресурсы (файлы, соединения, блокировки и т.д.). Обычно мы используем with open(...), но можно написать свой: