Курс 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
- Декоратор Ajax required
- Хеширование паролей с солью
- Подсчет вхождений элементов
- Руководство по Pymorphy2
- Бесконечная проверка в Python
- Numpy: разбиение массивов
- Изменение переменной в Python: nonlocal
- Метод rpow в Python
- Оптимизация памяти в Python
- Преобразование в float
- Импорт с альтернативным именем
- Функции в Python
- Работа с путями в Python
- Нахождение хеша для бесконечности и NaN в Python
- Работа с timedelta
- Конкатенация списков в Python
- Создание OrderedDict
- Структура данных словарь в Python
- Особенности ключей словаря в Python
- Создание лямбда-функций
- Ускоренный импорт библиотек
- Частичное совпадение ввода
- Сравнение строк в Python
- Разделение строки на пары ключ-значение.
- GitHub в Telegram: подписка на уведомления
- Операции с кортежами
- Функции map() и reduce() в Python
- Создание Telegram-бота на Python
- Перебор элементов списка в Python
- Управление фоновыми задачами в Python
- Namedtuple в Python
- Форматирование строк в Python
- Построение графиков в терминале с bashplotlib
- Проверка переменных окружения в Python
- Работа с срезами в Numpy
- Поиск элементов BeautifulSoup
- Документация функции help() в Python
- Работа с аргументами командной строки
- Работа с прокси в Python















