Курс 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. Заказ карты Тинькофф Black
  4. Работа с NumPy.linalg
  5. Сравнение неупорядоченных списков
  6. Форматирование объектов с модулем pprint
  7. Метод setdefault() в Python
  8. Получение атрибутов и методов класса
  9. Официальный канал Python в Telegram
  10. Операции с датами в Python
  11. Обработка ошибок в Python
  12. Возврат нескольких значений
  13. Модуль pprint: улучшение вывода данных
  14. Описание скриптов в README
  15. Открытие и редактирование скриптов Python
  16. Автоматизация скриптов на AWS Lightsail.
  17. Добавление Progressbar в Python
  18. Оболочка Python
  19. Проверка ввода с помощью isdigit
  20. Курс по дообучению ChatGPT
  21. Изменение элемента списка
  22. Объединение словарей в Python
  23. Форматирование строк в Python
  24. Python enumerate() функции
  25. Создание namedtuple из словаря
  26. Обязательные аргументы в Python
  27. Создание пользовательской коллекции в Python
  28. Магические методы в Python
  29. Библиотека funcy: удобные утилиты
  30. Комментарии в Python
  31. Обновление данных через PUT запрос
  32. Эффективная конкатенация строк с использованием join()
  33. Python Метод sleep() времени
  34. Создание новой даты в Python
  35. Использование модуля __future__
  36. Работа с многоуровневыми словарями в Python
  37. Запуск внешних программ с subprocess
  38. Обмен значений переменных в Python
  39. Реверс строки в Python
  40. Отладка утечек памяти в Python
  41. Обновление и получение данных в SQLite
  42. Копирование объектов в Python
  43. Создание коллекций из генератора
  44. Транспонирование 2D-массива с помощью zip
  45. Поиск с помощью регулярных выражений
  46. Python Ellipsis использование

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