Курс 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 с PrettyTable
- Antigravity модуль
- Непрерывная проверка в Python
- Функция format() в Python
- Парсинг статей с Newspaper3k
- Открытие и запись файлов
- Python 3.12: переиспользование кавычек
- Вычисление натуральных логарифмов в NumPy
- Дизассемблирование Python кода
- Определение объема памяти объекта
- Метод getitem для доступа к элементам последовательности
- Замыкания в Python
- Метод pos в Python
- Операции с комплексными числами
- Форматирование вывода с F-строками
- Списки в Python: синтаксис представления
- Распаковка элементов массива
- Поиск подстроки в строке
- Генераторы в Python
- Работа с прокси в Python
- Оценка выражений генератора в Python
- Обработка исключений в Python
- Очистка входных данных
- Работа с модулем os в Python
- Библиотека wikipedia для Python
- Импорт классов из другого файла
- Создание словарей и множеств в Python.
- Преобразование строк в числа с плавающей запятой
- Расчет времени выполнения кода
- Генераторы в Python
- Метод сравнения объектов в Python
- Обратное распространение ошибки
- Создание namedtuple списком полей
- Сравнение неупорядоченных списков
- 9 уловок для чистого кода
- Чтение и запись TOML-конфигов
- Генераторы данных
- Генераторы списков в Python
- Избегайте использования goto
- Создание файла с проверкой ошибки
- Карта бомбоубежищ в Москве и Питере
- Использование *args
- Объединение словарей в Python
- Отладка в командной строке
- Тернарный оператор в Python
- Объединение словарей в Python
- Многопроцессорное программирование в Python
- Удаление специальных символов с помощью re.sub















