Курс 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
- Оператор is в Python
- Особенности множеств в Python
- Анонимные функции в Python
- Экспорт внешнего файла с помощью writefile
- Комментарии в Python
- Декораторы в Python
- Округление в Python
- Дефолтные параметры в Python
- Методы работы со списками
- Форматирование вывода с F-строками
- Построение графиков в терминале с bashplotlib
- Получение текущего времени в Python
- Разработка игры Pong с turtle
- Замена текста в Python
- Оптимизация интернирования строк
- Работа с файлами в Python
- Работа с изменяемыми списками
- Переопределение метода delitem в Python
- Подсчет часто встречающихся элементов
- Python: Splat-оператор и splatty-splat
- Импорт с альтернативным именем
- Создание объекта timedelta
- Поиск частого элемента
- Форматирование строк в Python
- Манипуляция формой массива в Numpy
- Атрибуты класса и экземпляра в Python
- Функция print() — вывод информации
- GitHub в Telegram: подписка на уведомления
- Утечки переменных цикла в Python 3.x
- Объединение словарей в Python
- Оператор Walrus в Python
- Модуль pprint
- Объединение итераторов
- Оптимизация строк в Python
- Форматирование строк в Python
- JSON-esque в Python
- Bootle — простой веб-фреймворк
- Генераторы по генератору
- Профилирование данных с Pandas.
- Создание веб-приложения с Flask
- Ускоренный импорт библиотек
- Генераторы в Python
- Переворот списка в Python
- Работа с CSV в Python















