Контекстный менеджер управляет входом и выходом из блока with: открытием и закрытием ресурса, захватом и освобождением блокировки. Он вызывает enter и exit.
Что такое контекстные менеджеры в Python, для чего и где они используются?
Контекстный менеджер управляет входом и выходом из блока with: открытием и закрытием ресурса, захватом и освобождением блокировки. Он вызывает __enter__ и __exit__.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Контекстный менеджер управляет входом и выходом из блока with: открытием и закрытием ресурса, захватом и освобождением блокировки. Он вызывает enter и exit.
Если вход завершился успешно, при нормальном выходе и исключении вызывается exit. Он получает сведения об исключении и может подавить его, вернув истинное значение. Пример:
with open("data.txt", encoding="utf-8") as stream:
text = stream.read()
Файл закроется и при ошибке чтения. Аварийное завершение процесса не даёт такой гарантии. Для асинхронных ресурсов существует async with.
Источник: docs.python.org.