Контекстный менеджер
1. Что такое контекстный менеджер
Контекстный менеджер управляет ресурсами, обеспечивая правильное открытие и закрытие.
Используется через конструкцию
with.Основная идея: гарантированное выполнение кода при входе и выходе из контекста, даже если возникла ошибка.
2. Синтаксис
with <context_manager> as <variable>:
# код внутри контекста3. Пример с файлом
with open("test.txt", "w") as f:
f.write("Hello, world!")
# Файл автоматически закрыт после выхода из блока✅ Не нужно вызывать f.close() вручную.
4. Пример с блокировками (threading.Lock)
Контекстный менеджер гарантирует, что блокировка освободится даже при ошибке.
5. Создание собственного контекстного менеджера
Вариант 1: через методы __enter__ и __exit__
__enter__ и __exit__Вывод:
Вариант 2: через декоратор contextlib.contextmanager
contextlib.contextmanager6. Применение в автоматизации тестирования
Файлы: чтение/запись тестовых данных.
WebDriver: запуск браузера и автоматическое закрытие.
Сессии API:
requests.Session()черезwithдля корректного закрытия соединения.
Last updated
Was this helpful?