Курс 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"
- Ускоренный импорт библиотек
- Работа с атрибутом dict
- Обработка ошибок в Python
- Работа с timedelta в Python
- Сериализация и десериализация объектов
- Работа с асинхронными задачами в Python
- Модуль subprocess: запуск внешних команд
- Списковое включение в Python
- Цикл while в Python
- Конкатенация строк в Python
- Использование эмодзи в Python
- Измерение времени выполнения кода
- Анализ текста на русском языке с помощью Pymystem3
- Создание списка через итерацию
- Работа с Path в Python
- Экспорт функций в Python
- Объединение словарей в Python
- Работа с многоуровневыми словарями в Python
- Склеивание строк без циклов
- Принципы программирования
- Импорт объектов из модулей
- Поиск уникальных элементов строкой в Python
- Тип CodeType в Python.
- Метод matmul для умножения матриц
- Сортировка элементов в Python
- Проверка существования переменной с оператором :=
- Оптимизация гиперпараметров в Python
- Преобразование символов с помощью map
- Метод сравнения объектов в Python
- Python: цикл for и оператор присваивания
- Python-dateutil — работа с датами
- Идентификатор объекта в Python
- Поиск кода
- Поиск шаблона в строке
- Создание словарей в Python
- Определение объема памяти объекта
- split() — разделение строки
- Резервирование символов в Python
- Управление контекстом выполнения кода
- Уникальные значения из списка
- Объединение словарей в Python 3.5+
- Python: возвращение нескольких значений
- Округление банкира в Python
- Управление виртуальными окружениями в Python
- История Python















