Курс 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"
- Создание пар из последовательностей
- Функция all() в Python
- Протокол управления контекстом
- Уникальность ключей в словаре
- Объединение списков в Python.
- Цикл for с enumerate() в Python
- Библиотека Rich: форматирование текста
- Загрузка постов Instagram
- Переворот последовательности
- Замыкания в Python
- Выключение компьютера с помощью Python
- Функции all() и any() в Python
- Работа с рекламными данными в Pandas
- Проверка файла .py на синтаксис.
- Объявление переменных в Python
- Проверка условий в Python
- Работа с файлами в Python
- Создание списков в Python
- Управление асинхронными задачами на Python.
- Основы Python
- Обход словаря в Python
- Разбиение текста в Python
- Преобразование генераторов в циклы
- Применение функции map() с лямбда-функциями
- Удаление URL-адресов в Python
- Python Enumerate
- capitalize() — изменение регистра первого символа строки
- Генерация случайных чисел в Python
- Работа с буфером обмена на Python
- Создание матрицы в Python
- Объединение списков с использованием itertools.chain
- Обмен данными с asyncio.Queue
- Сортировка HTML-элементов
- Определение функций с необязательными аргументами
- Оператор is в Python
- Сравнение def и lambda в Python
- Виртуальное окружение Python
- JSON-esque в Python
- Расширение операции побитового «и» в Python
- Создание множества в Python
- Функция reduce() из модуля functools
- Замер времени выполнения кода
- Подсчет вхождений элементов
- Операции со строками в Python
- Модуль inspect: получение информации о объектах
- Оператор @ для умножения матриц
- Динамическая типизация в Python
- Создание генераторов















