Курс 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. Создание вкладок с TKinter
  2. Объединение словарей в Python
  3. Анализ текста на русском языке с помощью Pymystem3
  4. Отладчик pdb: начало работы
  5. Вывод переменной и строки в Python
  6. Разделение строки с помощью split()
  7. Создание коллекций из генератора
  8. Функции в Python: создание и вызов
  9. Работа с файлами в Python
  10. Обработка ошибок в JSON данных
  11. Возврат нескольких значений из функции
  12. UserList в Python: Описание и примеры использования
  13. Получение комбинаций в Python
  14. Метод ior для битовых операций
  15. Создание списков в Python
  16. Python Метод del.
  17. Методы classmethod и staticmethod
  18. Обезопасьте ввод данных
  19. Библиотека wikipedia для Python
  20. Комментарии в Python
  21. Удаление дубликатов из списка
  22. Создание новых списков в Python
  23. Получение срезов итераторов
  24. Оператор is в Python
  25. Работа с комплексными числами в Python
  26. Удаление первого элемента списка
  27. Основные методы NumPy
  28. Python Translator: создание локальных переводчиков
  29. Автоматизация с Python
  30. Переопределение метода __or__()
  31. Расчет времени выполнения кода
  32. Python: Splat-оператор и splatty-splat
  33. Работа с областями видимости переменных
  34. Оператор Walrus: правильное использование
  35. Работа с JSON данными в Python
  36. Возврат нескольких значений
  37. Оптимизация сравнения в Python
  38. Работа с итераторами в Python
  39. Применение функции к каждому элементу списка
  40. Декоратор Ajax required
  41. Генераторы в Python
  42. Работа с коллекциями Python
  43. Magic Commands — улучшение работы с Python
  44. Извлечение аудио из видео
  45. Работа с модулем random
  46. Сортировка с помощью параметра key

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