Курс 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. Управление контекстом с помощью декоратора contextmanager
  2. JMESPath в Python
  3. Избегайте изменяемых аргументов
  4. Навыки Python: строки, типы данных
  5. Метод rmatmul для пользовательских матриц
  6. Импорт модулей в Python 3.12
  7. Конвертация коллекций в Python
  8. Запуск внешних программ с subprocess
  9. Операторы увеличения и уменьшения в Python
  10. Поиск с помощью регулярных выражений
  11. Добавление цвета в консоли
  12. Определение локальных переменных в Python
  13. Генераторы списков в Python
  14. f-строки в формате строк
  15. Метод __irshift__ для Python
  16. Отношения подклассов в Python
  17. Использование type hints
  18. Преобразование генераторов в циклы
  19. Получение ID процесса
  20. Уникальные значения из списка
  21. Форматирование строк в Python
  22. Создание функций с произвольным количеством аргументов
  23. Метод rlshift для битового сдвига
  24. Создание словаря с значением по умолчанию
  25. Абстракции словарей и множеств в Python
  26. Чтение бинарного файла в Python.
  27. Участие в LP стейкинге Waves
  28. Метод join для объединения строк
  29. SciPy: широкий функционал для математических операций
  30. Поиск индексов в списке
  31. Работа с кортежами в Python
  32. Вывод сложных структур данных с помощью pprint
  33. Модуль xkcd: загрузка комиксов
  34. Отслеживание выполнения программы с библиотекой tqdm
  35. Форматирование строк в Python
  36. Использование функции enumerate()
  37. Метод __call__ в Python
  38. Шаблоны Flask: условия и циклы
  39. Построение графиков в Matplotlib
  40. Работа со словарями
  41. Monkey Patching в Python
  42. Сравнение def и lambda функций в Python
  43. Defaultdict в Python
  44. Переопределение метода __pow__
  45. Метод join() для объединения элементов строки
  46. Группировка элементов Python

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