Курс 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. Оператор is в Python
  3. Особенности множеств в Python
  4. Анонимные функции в Python
  5. Экспорт внешнего файла с помощью writefile
  6. Комментарии в Python
  7. Декораторы в Python
  8. Округление в Python
  9. Дефолтные параметры в Python
  10. Методы работы со списками
  11. Форматирование вывода с F-строками
  12. Построение графиков в терминале с bashplotlib
  13. Получение текущего времени в Python
  14. Разработка игры Pong с turtle
  15. Замена текста в Python
  16. Оптимизация интернирования строк
  17. Работа с файлами в Python
  18. Работа с изменяемыми списками
  19. Переопределение метода delitem в Python
  20. Подсчет часто встречающихся элементов
  21. Python: Splat-оператор и splatty-splat
  22. Импорт с альтернативным именем
  23. Создание объекта timedelta
  24. Поиск частого элемента
  25. Форматирование строк в Python
  26. Манипуляция формой массива в Numpy
  27. Атрибуты класса и экземпляра в Python
  28. Функция print() — вывод информации
  29. GitHub в Telegram: подписка на уведомления
  30. Утечки переменных цикла в Python 3.x
  31. Объединение словарей в Python
  32. Оператор Walrus в Python
  33. Модуль pprint
  34. Объединение итераторов
  35. Оптимизация строк в Python
  36. Форматирование строк в Python
  37. JSON-esque в Python
  38. Bootle — простой веб-фреймворк
  39. Генераторы по генератору
  40. Профилирование данных с Pandas.
  41. Создание веб-приложения с Flask
  42. Ускоренный импорт библиотек
  43. Генераторы в Python
  44. Переворот списка в Python
  45. Работа с CSV в Python

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