Курс 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 с PrettyTable
  2. Antigravity модуль
  3. Непрерывная проверка в Python
  4. Функция format() в Python
  5. Парсинг статей с Newspaper3k
  6. Открытие и запись файлов
  7. Python 3.12: переиспользование кавычек
  8. Вычисление натуральных логарифмов в NumPy
  9. Дизассемблирование Python кода
  10. Определение объема памяти объекта
  11. Метод getitem для доступа к элементам последовательности
  12. Замыкания в Python
  13. Метод pos в Python
  14. Операции с комплексными числами
  15. Форматирование вывода с F-строками
  16. Списки в Python: синтаксис представления
  17. Распаковка элементов массива
  18. Поиск подстроки в строке
  19. Генераторы в Python
  20. Работа с прокси в Python
  21. Оценка выражений генератора в Python
  22. Обработка исключений в Python
  23. Очистка входных данных
  24. Работа с модулем os в Python
  25. Библиотека wikipedia для Python
  26. Импорт классов из другого файла
  27. Создание словарей и множеств в Python.
  28. Преобразование строк в числа с плавающей запятой
  29. Расчет времени выполнения кода
  30. Генераторы в Python
  31. Метод сравнения объектов в Python
  32. Обратное распространение ошибки
  33. Создание namedtuple списком полей
  34. Сравнение неупорядоченных списков
  35. 9 уловок для чистого кода
  36. Чтение и запись TOML-конфигов
  37. Генераторы данных
  38. Генераторы списков в Python
  39. Избегайте использования goto
  40. Создание файла с проверкой ошибки
  41. Карта бомбоубежищ в Москве и Питере
  42. Использование *args
  43. Объединение словарей в Python
  44. Отладка в командной строке
  45. Тернарный оператор в Python
  46. Объединение словарей в Python
  47. Многопроцессорное программирование в Python
  48. Удаление специальных символов с помощью re.sub

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