Что такое контекстный менеджер в Python

Python Senior Без компании
Что такое контекстный менеджер в Python
Ответы
**Контекстный менеджер в Python** — это объект, который управляет ресурсами, обеспечивая корректное выполнение кода при входе и выходе из контекста с помощью методов **enter** и **exit**. *Пример 1:* ``` import time class Timer:     def __enter__(self):         self.start = time.time()         print("Таймер запущен")         return self     def __exit__(self, exc_type, exc_value, traceback):         end = time.time()         print(f"Время выполнения: {end - self.start:.2f} сек") # Вызов with Timer():     time.sleep(1)     print("Прошла 1 секунда") #Вывод Таймер запущен Прошла 1 секунда Время выполнения: 1.00 сек ``` *Пример 2: Кастомный контекстный менеджер (или наглядно что под коптом):* ``` class FileManager: def __enter__(self):         print("Открыли файл")         return self     def __exit__(self, exc_type, exc_value, tb):         print(" Закрыли файл")         return False  # Не подавлять исключения # Вызов try:     with FileManager():         print("Читаем данные...")         raise ValueError("Ошибка чтения") except ValueError as e:     print(f"Ошибка: {e}") finally:     print("Готово") ``` **Как это работает:** **enter -** Выполняется при входе в **with** (подключение) **try -** Основной код, может вызвать ошибку **exit -** Всегда вызывается при выходе из **with**, даже при ошибке **except -** Ловит исключение, если **exit** его не подавил **finally -** Выполняется в любом случае - чистка, логирование и т.д. **exit - гарантирует**, что ресурс (например, соединение) будет закрыт, **даже если в try произойдёт ошибка**.