Курс 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. Создание директории в Python
  4. Сортировка с помощью key
  5. Функции all и any в Python
  6. Модуль xkcd: загрузка комиксов
  7. Метод title() в Python
  8. Удаление символа из строки
  9. Команда %dhist — список посещенных каталогов
  10. Использование функции product
  11. Обучение модели с указанием эпох
  12. Тестирование с responses
  13. Поиск простых чисел
  14. Структурирование данных с Pydantic
  15. Изменения в обработке логических значений
  16. Метод сравнения объектов в Python
  17. Форматирование строк в Python
  18. Тестирование функции сложения
  19. Работа со словарями Python
  20. Аннотации типов в Python
  21. Бесконечная проверка в Python
  22. Основы работы с базами данных в Python
  23. Переопределение метода sub
  24. Python: библиотеки и функции
  25. Оператор == в Python
  26. Retrying в Python: повторные вызовы
  27. Функция format() в Python
  28. Изменение IP-адреса в Python
  29. Извлечение данных из JSON
  30. Преобразование в float
  31. Python: Фильтрация списков с помощью filter()
  32. Контекстный менеджер в Python
  33. Функция map() и ленивая оценка
  34. Метод lt для сортировки объектов
  35. Подсчет элементов в Python
  36. Участие в LP стейкинге Waves
  37. Модуль inspect
  38. Встраивание HTML в Jupyter Notebook
  39. Список методов и атрибутов
  40. Python union() функция — объединение множеств
  41. Функция enumerate в Python
  42. Создание словарей и множеств в Python.
  43. Форматирование вывода с F-строками
  44. Преобразование кортежа в словарь.
  45. Доступ к локальным переменным
  46. Управление фоновыми задачами в Python
  47. Декоратор Property в Python
  48. Установка Home Assistant

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