Back to questions
Junior — Middle
58
Какую функцию выполняет контекстный менеджер __exit__ в Python?
Answer from AI
sobes.tech AI
Метод __exit__ в контекстном менеджере Python вызывается при выходе из блока with. Его основная задача — корректно завершить работу с ресурсами, например, закрыть файл, освободить соединение с базой данных или отменить транзакцию.
Кроме того, __exit__ получает информацию об исключении, если оно произошло внутри блока with. Это позволяет обработать ошибку, подавить её или передать дальше. Если метод возвращает True, исключение считается обработанным и не будет проброшено дальше.
Пример простого контекстного менеджера:
class MyContext:
def __enter__(self):
print('Вход в контекст')
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print('Выход из контекста')
if exc_type:
print(f'Обработано исключение: {exc_type}')
# Возвращаем False, чтобы исключение не подавлять
return False
with MyContext():
print('Внутри блока')
# raise ValueError('Ошибка') # Можно раскомментировать для проверки обработки