Курс 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. Делегирование в Python
  2. Профилирование кода на Python
  3. Отправка POST-запроса в REST API
  4. Модуль inspect: получение информации о объектах
  5. Удаление элемента по индексу
  6. Генерация UUID в Python
  7. Переопределение оператора % для объектов
  8. Инициализация переменных
  9. Создание виртуальной среды
  10. Объединение списков с использованием itertools.chain
  11. Отладка в Python
  12. Операции с датами в Python
  13. Работа с атрибутом dict
  14. Логирование с Logzero
  15. Создание .exe файла с pyinstaller
  16. Создание виртуальной среды
  17. Логирование с Logzero: ротация файла
  18. Форматирование кода на Python
  19. Обработка исключений в Python
  20. Атрибуты объекта в Python
  21. Хешируемые ключи в Python
  22. Группировка элементов в словарь
  23. Получение ID процесса
  24. Метод split() в Python
  25. Простой калькулятор Python
  26. Разделение списка на гнппы
  27. Получение комбинаций в Python
  28. Глубокое копирование объектов
  29. Тип CodeType в Python.
  30. Основные функции и модули Python
  31. Класс-оболочка для словарей
  32. Подсчет элементов с помощью Counter
  33. Управление контекстом выполнения
  34. Создание циклической ссылки
  35. Генераторы списков в Python
  36. Сравнение def и lambda функций в Python
  37. Оператор объединения словарей
  38. Создание уникального проекта
  39. Проверка подстроки в строке с помощью in
  40. Работа с изображениями PIL
  41. Использование подчеркивания в REPL
  42. Управление пакетами с pip
  43. Импорт классов из другого файла
  44. Определение имен функций
  45. Настройка логгера Logzero

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