Курс 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. Списки в Python
  3. Установка Python — Простое руководство
  4. Удаление дубликатов с помощью множеств
  5. Удаление элементов по срезу
  6. Объединение строк с помощью метода join
  7. Очистка строки в Python
  8. Курс Data Scientist в медицине
  9. Использование функции product
  10. Упрощенный вывод данных в Python
  11. Комментарии в Python
  12. Переопределение метода divmod
  13. Списки: объединение, изменение
  14. Объединение словарей в Python
  15. Упрощение работы с JSON-данными в Python
  16. Поиск шаблона в начале строки
  17. Antigravity модуль
  18. Названия столбцов в Python таблицах
  19. Анонимные функции в Python
  20. Названия переменных
  21. Сортировка HTML-элементов
  22. Удаление элементов из списка в Python
  23. Объединение списков с помощью zip
  24. Проверка дублей в списке.
  25. Простой калькулятор Python
  26. Работа с кортежами в Python
  27. Удаление элементов во время итерации
  28. Метод ne для сравнения объектов
  29. Модуль math: константы π и e
  30. Получение имени функции с помощью inspect
  31. Работа с IP-адресами в Python
  32. Реверс строки и списка в Python.
  33. Итерация по копии коллекции
  34. Сортировка элементов с OrderedDict
  35. Генераторы в Python
  36. Проверка элемента в множестве.
  37. Преобразование строк в числа с плавающей запятой
  38. Форматирование строк в Python
  39. Работа со временем в Python
  40. Создание даты из строки ISO
  41. Метод is_absolute() для PurePath
  42. Метод enumerate() в Python
  43. Установка и загрузка Instaloader
  44. Декораторы в Python
  45. Капитализация строк

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