Курс 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"

  1. Списковое включение в Python
  2. Множественное присваивание в Python
  3. Генерация QR-кодов с Python
  4. Разрешение имен в Python
  5. Генерация UUID в Python
  6. Метод ne для сравнения объектов
  7. Измерение времени выполнения в Python
  8. Функции map, filter и reduce
  9. Создание словарей в Python
  10. Перегрузка операторов в Python
  11. PATCH-запрос с библиотекой requests
  12. Операции с датами в Python
  13. Работа с deque из collections
  14. Особенности запятых в Python
  15. Определение индекса элемента списка
  16. Строковое представление объектов
  17. Работа с функцией next() в Python
  18. Magic Commands — улучшение работы с Python
  19. Python 3.12: переиспользование кавычек
  20. Регулярные выражения: метод match
  21. split() без разделителя
  22. Проверка подстроки в строке с помощью in
  23. Многострочные комментарии в Python
  24. Перехват исключений в Python
  25. Сортировка HTML по CSS-селектору
  26. Введение в Python
  27. Профилирование кода
  28. Отображение графиков в Jupyter с Matplotlib
  29. Функция print() — вывод информации
  30. Форматирование вывода списков
  31. Поиск повторов в списке
  32. Асинхронное выполнение задач в Python
  33. Проверка версии Python
  34. Функциональное программирование.
  35. Переопределение метода divmod
  36. Метод join() для объединения элементов в строку.
  37. Преобразование кортежа в словарь.
  38. Оператор space-invader
  39. Проверка переменных окружения в Python
  40. Изменение регистра данных

Marketello читают маркетологи из крутых компаний