Курс 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
- Профилирование кода на Python
- Отправка POST-запроса в REST API
- Модуль inspect: получение информации о объектах
- Удаление элемента по индексу
- Генерация UUID в Python
- Переопределение оператора % для объектов
- Инициализация переменных
- Создание виртуальной среды
- Объединение списков с использованием itertools.chain
- Отладка в Python
- Операции с датами в Python
- Работа с атрибутом dict
- Логирование с Logzero
- Создание .exe файла с pyinstaller
- Создание виртуальной среды
- Логирование с Logzero: ротация файла
- Форматирование кода на Python
- Обработка исключений в Python
- Атрибуты объекта в Python
- Хешируемые ключи в Python
- Группировка элементов в словарь
- Получение ID процесса
- Метод split() в Python
- Простой калькулятор Python
- Разделение списка на гнппы
- Получение комбинаций в Python
- Глубокое копирование объектов
- Тип CodeType в Python.
- Основные функции и модули Python
- Класс-оболочка для словарей
- Подсчет элементов с помощью Counter
- Управление контекстом выполнения
- Создание циклической ссылки
- Генераторы списков в Python
- Сравнение def и lambda функций в Python
- Оператор объединения словарей
- Создание уникального проекта
- Проверка подстроки в строке с помощью in
- Работа с изображениями PIL
- Использование подчеркивания в REPL
- Управление пакетами с pip
- Импорт классов из другого файла
- Определение имен функций
- Настройка логгера Logzero















