Курс 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. Декораторы с аргументами
  3. Работа с CSV файлами
  4. Настройка вывода NumPy
  5. Определение функций с необязательными аргументами
  6. Функции all и any в Python
  7. Уникальные значения из списка
  8. Избегайте двойного подчеркивания
  9. Взаимодействие с sys
  10. Метод округления чисел
  11. Введение в PyTorch
  12. Добавление цвета в консоли
  13. Сглаживание списка
  14. Создание именованных кортежей в Python
  15. Применение функции map() в Python
  16. Переопределение метода divmod
  17. Работа с NumPy массивами
  18. Форматирование кода на Python
  19. Progress с библиотекой tqdm
  20. Замена символов в Python
  21. Преобразование документов в PDF с помощью Spire.Office
  22. Проверка запуска скрипта или импорта модуля
  23. Метод join() для объединения элементов
  24. Проверка класса объекта
  25. Итерация по итерируемым объектам
  26. Форматирование данных с помощью pprint
  27. Многоточие в Python
  28. Контекстный менеджер в Python
  29. Просмотр атрибутов и методов класса
  30. Анонимные функции в Python
  31. Циклы в Python
  32. Форматирование строк в Python
  33. Бинарный поиск
  34. Принципы программирования
  35. Создание инструмента обнаружения плагиата
  36. Оптимизация интернирования строк
  37. Конвертация изображений в PDF
  38. Работа с коллекциями Python
  39. Dict Comprehension в Python
  40. Обязательные аргументы в Python
  41. Flask: создание веб-приложений
  42. Модуль Antigravity в Python 3
  43. Замыкания в Python
  44. Округление чисел с помощью round
  45. Объединение строк с помощью метода join

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