Курс 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"
- Применение функции к списку
- Декораторы с аргументами
- Работа с CSV файлами
- Настройка вывода NumPy
- Определение функций с необязательными аргументами
- Функции all и any в Python
- Уникальные значения из списка
- Избегайте двойного подчеркивания
- Взаимодействие с sys
- Метод округления чисел
- Введение в PyTorch
- Добавление цвета в консоли
- Сглаживание списка
- Создание именованных кортежей в Python
- Применение функции map() в Python
- Переопределение метода divmod
- Работа с NumPy массивами
- Форматирование кода на Python
- Progress с библиотекой tqdm
- Замена символов в Python
- Преобразование документов в PDF с помощью Spire.Office
- Проверка запуска скрипта или импорта модуля
- Метод join() для объединения элементов
- Проверка класса объекта
- Итерация по итерируемым объектам
- Форматирование данных с помощью pprint
- Многоточие в Python
- Контекстный менеджер в Python
- Просмотр атрибутов и методов класса
- Анонимные функции в Python
- Циклы в Python
- Форматирование строк в Python
- Бинарный поиск
- Принципы программирования
- Создание инструмента обнаружения плагиата
- Оптимизация интернирования строк
- Конвертация изображений в PDF
- Работа с коллекциями Python
- Dict Comprehension в Python
- Обязательные аргументы в Python
- Flask: создание веб-приложений
- Модуль Antigravity в Python 3
- Замыкания в Python
- Округление чисел с помощью round
- Объединение строк с помощью метода join















