Курс 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. Передача словаря через **kwargs
  2. Скачать видео с YouTube
  3. Повторение элементов списков
  4. Оператор in в Python
  5. Участие в LP стейкинге Waves
  6. Абстракции словарей и множеств в Python
  7. Тестирование функции сложения
  8. Простой калькулятор Python
  9. Оператор space-invader
  10. Принципы LSP и ISP в Python
  11. Python UserString — создание подклассов строк
  12. Ветвление выражения в Python
  13. Обработка ошибок ввода данных
  14. Dict Comprehension в Python
  15. Показ всплывающих окон Tkinter
  16. Замыкания в Python
  17. Фильтрация данных в Python.
  18. Функции классификации комплексных чисел
  19. Работа с контекст-менеджером «with»
  20. Запуск файлового сервера
  21. Изменение элемента списка
  22. Поиск с библиотекой Google
  23. Оптимизация поиска в словарях
  24. Применение промокода в Много лосося
  25. Использование модуля __future__
  26. Удаление дубликатов в pandas
  27. Метод __irshift__ для Python
  28. Векторизация в Python с NumPy.
  29. EMOT преобразование эмодзи в текст
  30. Построение графиков в Matplotlib
  31. Создание и обучение модели с Keras
  32. Использование модуля math
  33. Анализ кода — Python
  34. Измерение времени выполнения с помощью time
  35. Создание списков в Python
  36. Оформление текста в консоли с TermColor
  37. Удаление элемента по индексу в Python
  38. Конкатенация строк в Python
  39. Правила именования переменных
  40. Обработка ошибок в JSON данных
  41. Отображение HTML кода в Python
  42. Избегайте изменяемых аргументов
  43. Поиск самого частого элемента

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