Курс 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. Метод ne для сравнения объектов
  2. Базовые объекты Python
  3. Хешируемые ключи в Python
  4. Удаление файлов с shutil.os.remove()
  5. Названия переменных
  6. Дизассемблирование Python кода
  7. Цепные операции в Python
  8. Сериализация и десериализация объектов
  9. Цикл for в Python
  10. Работа с *args и **kwargs в Python
  11. Модуль xkcd: добавление юмора в Python
  12. Создание треугольника Паскаля
  13. Подсказки при вводе данных в Python
  14. Форматирование заголовков в Python
  15. Обход дочерних элементов BeautifulSoup
  16. Работа с collections в Python.
  17. Работа с асинхронными задачами в Python
  18. Работа с срезами в Numpy
  19. Циклы for в Python
  20. Проверка класса объекта
  21. Визуализация пропусков данных
  22. Перетасовка списков в Python
  23. Защита данных в Python
  24. Метод ipow для возведения в степень
  25. Распаковка элементов последовательности
  26. Измерение времени выполнения с помощью time
  27. Экспорт данных с помощью writefile
  28. Создание итератора
  29. Разделение строки в Python
  30. Работа с комплексными числами
  31. Замыкания в Python
  32. Поиск email
  33. Метод bool() в Python
  34. Создание новых списков через list comprehensions
  35. Преобразование регистра символов
  36. Математические функции в Python
  37. Конкатенация строк с помощью join()
  38. Работа с функцией next() в Python
  39. Python enumerate() использование
  40. Генераторы в Python
  41. Создание комплексных чисел
  42. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys

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