Курс 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. Функция all() в Python
  3. Протокол управления контекстом
  4. Уникальность ключей в словаре
  5. Объединение списков в Python.
  6. Цикл for с enumerate() в Python
  7. Библиотека Rich: форматирование текста
  8. Загрузка постов Instagram
  9. Переворот последовательности
  10. Замыкания в Python
  11. Выключение компьютера с помощью Python
  12. Функции all() и any() в Python
  13. Работа с рекламными данными в Pandas
  14. Проверка файла .py на синтаксис.
  15. Объявление переменных в Python
  16. Проверка условий в Python
  17. Работа с файлами в Python
  18. Создание списков в Python
  19. Управление асинхронными задачами на Python.
  20. Основы Python
  21. Обход словаря в Python
  22. Разбиение текста в Python
  23. Преобразование генераторов в циклы
  24. Применение функции map() с лямбда-функциями
  25. Удаление URL-адресов в Python
  26. Python Enumerate
  27. capitalize() — изменение регистра первого символа строки
  28. Генерация случайных чисел в Python
  29. Работа с буфером обмена на Python
  30. Создание матрицы в Python
  31. Объединение списков с использованием itertools.chain
  32. Обмен данными с asyncio.Queue
  33. Сортировка HTML-элементов
  34. Определение функций с необязательными аргументами
  35. Оператор is в Python
  36. Сравнение def и lambda в Python
  37. Виртуальное окружение Python
  38. JSON-esque в Python
  39. Расширение операции побитового «и» в Python
  40. Создание множества в Python
  41. Функция reduce() из модуля functools
  42. Замер времени выполнения кода
  43. Подсчет вхождений элементов
  44. Операции со строками в Python
  45. Модуль inspect: получение информации о объектах
  46. Оператор @ для умножения матриц
  47. Динамическая типизация в Python
  48. Создание генераторов

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