Курс 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"
- Проверка подстроки в строке
- Правила именования переменных
- Логирование с Loguru
- Установка пакета в Python
- Получение размера объекта с sys.getsizeof()
- Цикл for с enumerate() в Python
- Округление дробей в Python
- Функции в Python
- Роль ключевого слова self
- Вставка переменных в шаблоны Flask
- Вакансии в Nebius
- f-строки в формате строк
- Конкатенация списков в Python
- Обмен значений переменных в Python
- Подсказки типов в Python
- Преобразование данных в Python
- Декораторы в Python
- Форматирование строк в Python
- Оператор «not» в Python
- Работа с множествами в Python
- Python 3.12: переиспользование кавычек
- Настройка шрифта и цвета в Tkinter
- Перемещение и удаление файлов в Python
- Автоматизация с Python
- Методы работы со строками в Python
- Атрибуты массивов в Numpy
- Сложение матриц в NumPy
- Проверка списка: any() и all()
- Метод __int__ в Python
- Работа с кортежами
- Вложенные циклы в Python
- Обработка ошибки IndexError
- Принципы программирования
- Удаление элемента из списка
- Управление экспортом элементов
- Автоматизация действий с Pyautogui
- Генераторы списков в Python
- Очистка списка от False, None, 0, «»
- Структурирование данных с Pydantic
- Обработка исключений в Python
- Преобразование данных в Python
- Переменные класса и экземпляра
- Импорт модулей в Python 3.12
- Частичное совпадение ввода
- Форматирование строк в Python
- Управление доступом к модулю















