Курс 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. Декоратор Property в Python
  2. Combobox в Tkinter
  3. JMESPath в Python
  4. Проверка элемента в множестве.
  5. Форматирование чисел в Python
  6. Создание новых списков через list comprehensions
  7. Декодирование байтов в строку
  8. Пропуск строк в файле с itertools
  9. Библиотека Rich: форматирование текста
  10. Удаление символа из строки
  11. Работа с срезами в Python
  12. Отладка кода
  13. Настройка шрифта и цвета в Tkinter
  14. Декораторы в Python
  15. Функция rsplit() в Python
  16. Функция reduce() из модуля functools
  17. Методы в Python
  18. Импорт объектов из модулей
  19. Принципы Zen of Python
  20. Сортировка слиянием
  21. Структуры данных в Python
  22. Создание даты из строки ISO
  23. Переменные в Python: сокращение гласных
  24. Очистка данных в Python
  25. Копирование списков в Python
  26. Цикл for в Python
  27. Расширение операции побитового «и» в Python
  28. Основные функции и модули Python
  29. Решение переменной Шредингера
  30. Методы HTTP запросов в Flask
  31. Удаление файлов с shutil.os.remove()
  32. Операции с датами в Python
  33. Работа с комплексными числами
  34. Работа с Event() в threading
  35. Конкатенация строк в Python
  36. Измерение потребления памяти при сортировке
  37. Вложенные функции в Python
  38. Метод __ixor__ для побитового исключающего ИЛИ
  39. Codecademy в Telegram
  40. Функции в одну строку
  41. Создание списка через итерацию
  42. Принципы SRP и OCP
  43. Генераторы в Python
  44. Управление пакетами с pip
  45. Генераторы данных

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