Курс 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"
- Управление контекстом с помощью декоратора contextmanager
- JMESPath в Python
- Избегайте изменяемых аргументов
- Навыки Python: строки, типы данных
- Метод rmatmul для пользовательских матриц
- Импорт модулей в Python 3.12
- Конвертация коллекций в Python
- Запуск внешних программ с subprocess
- Операторы увеличения и уменьшения в Python
- Поиск с помощью регулярных выражений
- Добавление цвета в консоли
- Определение локальных переменных в Python
- Генераторы списков в Python
- f-строки в формате строк
- Метод __irshift__ для Python
- Отношения подклассов в Python
- Использование type hints
- Преобразование генераторов в циклы
- Получение ID процесса
- Уникальные значения из списка
- Форматирование строк в Python
- Создание функций с произвольным количеством аргументов
- Метод rlshift для битового сдвига
- Создание словаря с значением по умолчанию
- Абстракции словарей и множеств в Python
- Чтение бинарного файла в Python.
- Участие в LP стейкинге Waves
- Метод join для объединения строк
- SciPy: широкий функционал для математических операций
- Поиск индексов в списке
- Работа с кортежами в Python
- Вывод сложных структур данных с помощью pprint
- Модуль xkcd: загрузка комиксов
- Отслеживание выполнения программы с библиотекой tqdm
- Форматирование строк в Python
- Использование функции enumerate()
- Метод __call__ в Python
- Шаблоны Flask: условия и циклы
- Построение графиков в Matplotlib
- Работа со словарями
- Monkey Patching в Python
- Сравнение def и lambda функций в Python
- Defaultdict в Python
- Переопределение метода __pow__
- Метод join() для объединения элементов строки
- Группировка элементов Python















