Курс 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
- Сортировка с помощью key
- Функции all и any в Python
- Модуль xkcd: загрузка комиксов
- Метод title() в Python
- Удаление символа из строки
- Команда %dhist — список посещенных каталогов
- Использование функции product
- Обучение модели с указанием эпох
- Тестирование с responses
- Поиск простых чисел
- Структурирование данных с Pydantic
- Изменения в обработке логических значений
- Метод сравнения объектов в Python
- Форматирование строк в Python
- Тестирование функции сложения
- Работа со словарями Python
- Аннотации типов в Python
- Бесконечная проверка в Python
- Основы работы с базами данных в Python
- Переопределение метода sub
- Python: библиотеки и функции
- Оператор == в Python
- Retrying в Python: повторные вызовы
- Функция format() в Python
- Изменение IP-адреса в Python
- Извлечение данных из JSON
- Преобразование в float
- Python: Фильтрация списков с помощью filter()
- Контекстный менеджер в Python
- Функция map() и ленивая оценка
- Метод lt для сортировки объектов
- Подсчет элементов в Python
- Участие в LP стейкинге Waves
- Модуль inspect
- Встраивание HTML в Jupyter Notebook
- Список методов и атрибутов
- Python union() функция — объединение множеств
- Функция enumerate в Python
- Создание словарей и множеств в Python.
- Форматирование вывода с F-строками
- Преобразование кортежа в словарь.
- Доступ к локальным переменным
- Управление фоновыми задачами в Python
- Декоратор Property в Python
- Установка Home Assistant















