Sobes.tech
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('Ошибка')  # Можно раскомментировать для проверки обработки