Курс 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. Методы list в Python
  2. EMOT преобразование эмодзи в текст
  3. Создание и операции с дробями
  4. Работа с датой и временем в Python
  5. Метод rmatmul для пользовательских матриц
  6. Глобальные переменные в Python
  7. Переменная с нижним подчеркиванием
  8. Перевод эмодзи и эмотиконов.
  9. Очистка данных с помощью pandas
  10. Оператор in и not in в Python
  11. Модуль subprocess: запуск внешних команд
  12. Извлечение аудио из видео
  13. Прокачанный трейсинг ошибок
  14. Хранение переменных в словаре.
  15. Работа со строками в Python
  16. Методы сравнения множеств
  17. Имена объектов в Python
  18. Автоматизация с Python
  19. Транспонирование матрицы
  20. Основы работы со списками
  21. Инвертирование словаря
  22. Проверка элементов списка условием
  23. Комментарии в Python
  24. Операции с комплексными числами
  25. Переменные класса и экземпляра
  26. Модуль itertools: эффективная работа с итераторами
  27. Оператор «is not» в Python
  28. Просмотр файла в Jupyter Noteboo
  29. Абстракции словарей и множеств в Python
  30. Оптимизация гиперпараметров с Scikit Optimize
  31. TypedDict для kwargs в Python 3.12
  32. Ускорение выполнения кода в Python
  33. Python Enumerate
  34. Определение основы слова с showballstemmer
  35. Работа с комбинациями в Python.
  36. Добавление Progressbar в Python
  37. Подсчет частотности элементов в Python
  38. Именованные аргументы в Python
  39. Циклы в Python
  40. Python: библиотеки и функции
  41. Работа с deque в Python
  42. CLI-инструмент howdoi
  43. Списки: объединение, изменение

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