Курс 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. Инициализация структур данных
  3. Сортировка с параметром key
  4. Декоратор Ajax required
  5. Хеширование паролей с солью
  6. Подсчет вхождений элементов
  7. Руководство по Pymorphy2
  8. Бесконечная проверка в Python
  9. Numpy: разбиение массивов
  10. Изменение переменной в Python: nonlocal
  11. Метод rpow в Python
  12. Оптимизация памяти в Python
  13. Преобразование в float
  14. Импорт с альтернативным именем
  15. Функции в Python
  16. Работа с путями в Python
  17. Нахождение хеша для бесконечности и NaN в Python
  18. Работа с timedelta
  19. Конкатенация списков в Python
  20. Создание OrderedDict
  21. Структура данных словарь в Python
  22. Особенности ключей словаря в Python
  23. Создание лямбда-функций
  24. Ускоренный импорт библиотек
  25. Частичное совпадение ввода
  26. Сравнение строк в Python
  27. Разделение строки на пары ключ-значение.
  28. GitHub в Telegram: подписка на уведомления
  29. Операции с кортежами
  30. Функции map() и reduce() в Python
  31. Создание Telegram-бота на Python
  32. Перебор элементов списка в Python
  33. Управление фоновыми задачами в Python
  34. Namedtuple в Python
  35. Форматирование строк в Python
  36. Построение графиков в терминале с bashplotlib
  37. Проверка переменных окружения в Python
  38. Работа с срезами в Numpy
  39. Поиск элементов BeautifulSoup
  40. Документация функции help() в Python
  41. Работа с аргументами командной строки
  42. Работа с прокси в Python

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