Курс 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: Splat-оператор и splatty-splat
- Управление ресурсами с контекстными менеджерами
- Расширение информации об ошибке в Python
- Оператор деления для класса Rational
- Генераторы списков в Python
- Секреты Python
- Руководство по использованию Colorama
- Вывод с переменной через запятую
- Автоматизация с Python
- Генераторы в Python
- Модуль math: константы π и e
- Динамическая типизация в Python
- Инициализация переменных
- Генерация UUID в Python
- Оформление текста в консоли с TermColor
- Форматирование кода на Python
- ChainMap.new_child() — добавление нового словаря
- Курс Data Scientist в медицине
- Метод rlshift для битового сдвига
- Преобразование кортежа в словарь.
- Поиск с помощью регулярных выражений
- Concrete Paths в Python
- Закрытие файла в Python
- Отделение звука от видео
- Поиск шаблона в строке
- Сортировка данных в Python
- Поиск индекса элемента
- Генерация случайных чисел в Python
- Функция zip() в Python
- Управление фоновыми задачами в Python
- Многострочные комментарии в Python
- Нахождение максимального значения и его индекса в списке
- Справка по импортированным модулям
- Объединение множеств в Python
- Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
- Установка и использование модуля «howdoi»
- Форматирование строк с f-строками
- Вложенные генераторы в Python
- Добавление Progressbar в Python
- Объединение списков с использованием itertools.chain
- Асинхронное программирование с asyncio
- Python OrderedDict и fromkeys() — работа с словарями
- Конвертация текстовых чисел с помощью Numerizer
- Создание функций высшего порядка
- Переименование файлов в Python
- Функциональное программирование в Python















