Курс 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. ROT13 Шифр Цезаря в Python
  2. Генераторы в Python
  3. Расчет времени выполнения кода
  4. Переворот последовательности
  5. Создание даты из строки ISO
  6. Основы работы со списками
  7. Встраивание HTML в Jupyter Notebook
  8. Упрощение работы с JSON-данными в Python
  9. Оператор in для Python
  10. Отладка производительности Python
  11. Роль ключевого слова self
  12. Удаление символа из строки
  13. Отрицательные индексы списков в Python
  14. Переворот строки с помощью срезов
  15. Статическая типизация в Python
  16. Отображение HTML кода в Python
  17. Python: динамическая типизация и проверка типов
  18. Создание словаря через dict comprehension
  19. Импорт и использование модулей в Python
  20. Работа с библиотекой requests
  21. Замена элементов в списке с помощью генераторов списков
  22. Анонимные функции в Python
  23. Установка переменной среды в Python
  24. Преобразование строки в число
  25. Метод get для словаря
  26. Генерация фальшивых данных с Faker
  27. Применение функции map() в Python
  28. Создание и инициализация объектов
  29. Удаление дубликатов из списка
  30. Retrying в Python: повторные вызовы
  31. Импорт классов из другого файла
  32. Работа со словарями
  33. Асинхронное выполнение задач в Python
  34. Преобразование чисел в Python
  35. Создание словарей и множеств в Python.
  36. Просмотр атрибутов и методов класса
  37. Порядок операций в Python
  38. Генерация QR-кодов с Python
  39. Получение размера объекта с sys.getsizeof()
  40. Удаление элементов из списка в Python
  41. Метод __ixor__ для побитового исключающего ИЛИ
  42. Методы и функции в Python
  43. Шаблоны Flask: условия и циклы
  44. Оптимизация гиперпараметров в Python
  45. Функция enumerate() в Python
  46. Дефолтные параметры в Python
  47. Модуль future Python

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