Курс 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. Новшества Flask 2.0
  3. Работа с файлами в Python
  4. Ошибка NotImplemented в Python
  5. Многоточие в Python
  6. Группировка элементов в словарь
  7. Загрузка постов Instagram
  8. Оценка выражений генератора в Python
  9. Бинарный поиск
  10. Управление импортом в Python
  11. Работа с f-строками 2.0
  12. Структурирование именованных констант
  13. Метод rsub в Python: расширение функциональности вычитания
  14. Нахождение разницы между списками в Python
  15. Оператор «моржа» (Walrus Operator)
  16. Создание класса в Python
  17. Генераторы списков в Python
  18. Метод gt в Python
  19. Генераторы словарей и множеств
  20. Именование переменных в Python
  21. Именование столбцов в Python с pandas
  22. Удаление дубликатов из списка с помощью dict.fromkeys
  23. Хешируемые ключи в Python
  24. Метод __imod__ для Python
  25. Передача словаря через **kwargs
  26. Создание копии списка в Python
  27. Python enumerate() функции
  28. Поиск частого элемента
  29. Открытие и редактирование скриптов Python
  30. Установка переменной среды в Python
  31. Вычисление натурального логарифма в NumPy
  32. Метод __complex__ в Python
  33. Создание словаря с значением по умолчанию
  34. Атрибуты класса и экземпляра
  35. Генерация QR-кодов с библиотекой qrcode
  36. Присвоение и ссылки
  37. Присоединение элементов коллекции
  38. Retrying в Python: повторные вызовы
  39. TON Smart Challenge #2: участие и подготовка
  40. Перегрузка операторов в Python
  41. Удаление файлов в Python
  42. JMESPath в Python
  43. Метод split() в Python
  44. Проверка условий в Python

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