Курс 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. Ускоренный импорт библиотек
  2. Работа с атрибутом dict
  3. Обработка ошибок в Python
  4. Работа с timedelta в Python
  5. Сериализация и десериализация объектов
  6. Работа с асинхронными задачами в Python
  7. Модуль subprocess: запуск внешних команд
  8. Списковое включение в Python
  9. Цикл while в Python
  10. Конкатенация строк в Python
  11. Использование эмодзи в Python
  12. Измерение времени выполнения кода
  13. Анализ текста на русском языке с помощью Pymystem3
  14. Создание списка через итерацию
  15. Работа с Path в Python
  16. Экспорт функций в Python
  17. Объединение словарей в Python
  18. Работа с многоуровневыми словарями в Python
  19. Склеивание строк без циклов
  20. Принципы программирования
  21. Импорт объектов из модулей
  22. Поиск уникальных элементов строкой в Python
  23. Тип CodeType в Python.
  24. Метод matmul для умножения матриц
  25. Сортировка элементов в Python
  26. Проверка существования переменной с оператором :=
  27. Оптимизация гиперпараметров в Python
  28. Преобразование символов с помощью map
  29. Метод сравнения объектов в Python
  30. Python: цикл for и оператор присваивания
  31. Python-dateutil — работа с датами
  32. Идентификатор объекта в Python
  33. Поиск кода
  34. Поиск шаблона в строке
  35. Создание словарей в Python
  36. Определение объема памяти объекта
  37. split() — разделение строки
  38. Резервирование символов в Python
  39. Управление контекстом выполнения кода
  40. Уникальные значения из списка
  41. Объединение словарей в Python 3.5+
  42. Python: возвращение нескольких значений
  43. Округление банкира в Python
  44. Управление виртуальными окружениями в Python
  45. История Python

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