Курс Python → Управление контекстом с помощью декоратора contextmanager
Для создания объектов, поддерживающих выражение with, можно использовать декоратор contextmanager. Этот способ управления контекстом более удобный и понятный, чем использование методов __enter__ и __exit__. При использовании декоратора contextmanager необходимо определить функцию, которая будет являться менеджером контекста.
Примером такой функции может быть функция tag, которая будет выполнять определенные действия при входе и выходе из блока with. Первая часть функции tag (до ключевого слова yield) будет выполняться при входе в блок with, затем будет выполнен сам блок, а после выхода из блока будет выполнена оставшаяся часть функции tag.
from contextlib import contextmanager
@contextmanager
def tag(name):
print(f'')
yield
print(f'')
with tag('div'):
print('Hello, World!')
В данном примере функция tag используется как менеджер контекста для создания HTML-тегов. При входе в блок with будет выведен открывающий тег <div>, затем будет выведено сообщение Hello, World!, а при выходе из блока будет выведен закрывающий тег </div>.
Использование декоратора contextmanager позволяет упростить работу с контекстными менеджерами и сделать код более читаемым. Этот подход особенно удобен при работе с ресурсами, которые должны быть корректно открыты и закрыты, такими как файлы или сетевые соединения.
Другие уроки курса "Python"
- Списковое включение в Python
- Множественное присваивание в Python
- Генерация QR-кодов с Python
- Разрешение имен в Python
- Генерация UUID в Python
- Метод ne для сравнения объектов
- Измерение времени выполнения в Python
- Функции map, filter и reduce
- Создание словарей в Python
- Перегрузка операторов в Python
- PATCH-запрос с библиотекой requests
- Операции с датами в Python
- Работа с deque из collections
- Особенности запятых в Python
- Определение индекса элемента списка
- Строковое представление объектов
- Работа с функцией next() в Python
- Magic Commands — улучшение работы с Python
- Python 3.12: переиспользование кавычек
- Регулярные выражения: метод match
- split() без разделителя
- Проверка подстроки в строке с помощью in
- Многострочные комментарии в Python
- Перехват исключений в Python
- Сортировка HTML по CSS-селектору
- Введение в Python
- Профилирование кода
- Отображение графиков в Jupyter с Matplotlib
- Функция print() — вывод информации
- Форматирование вывода списков
- Поиск повторов в списке
- Асинхронное выполнение задач в Python
- Проверка версии Python
- Функциональное программирование.
- Переопределение метода divmod
- Метод join() для объединения элементов в строку.
- Преобразование кортежа в словарь.
- Оператор space-invader
- Проверка переменных окружения в Python
- Изменение регистра данных















