Курс 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. Логирование с Loguru
  4. Установка пакета в Python
  5. Получение размера объекта с sys.getsizeof()
  6. Цикл for с enumerate() в Python
  7. Округление дробей в Python
  8. Функции в Python
  9. Роль ключевого слова self
  10. Вставка переменных в шаблоны Flask
  11. Вакансии в Nebius
  12. f-строки в формате строк
  13. Конкатенация списков в Python
  14. Обмен значений переменных в Python
  15. Подсказки типов в Python
  16. Преобразование данных в Python
  17. Декораторы в Python
  18. Форматирование строк в Python
  19. Оператор «not» в Python
  20. Работа с множествами в Python
  21. Python 3.12: переиспользование кавычек
  22. Настройка шрифта и цвета в Tkinter
  23. Перемещение и удаление файлов в Python
  24. Автоматизация с Python
  25. Методы работы со строками в Python
  26. Атрибуты массивов в Numpy
  27. Сложение матриц в NumPy
  28. Проверка списка: any() и all()
  29. Метод __int__ в Python
  30. Работа с кортежами
  31. Вложенные циклы в Python
  32. Обработка ошибки IndexError
  33. Принципы программирования
  34. Удаление элемента из списка
  35. Управление экспортом элементов
  36. Автоматизация действий с Pyautogui
  37. Генераторы списков в Python
  38. Очистка списка от False, None, 0, «»
  39. Структурирование данных с Pydantic
  40. Обработка исключений в Python
  41. Преобразование данных в Python
  42. Переменные класса и экземпляра
  43. Импорт модулей в Python 3.12
  44. Частичное совпадение ввода
  45. Форматирование строк в Python
  46. Управление доступом к модулю

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