Курс 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. Работа с срезами в Numpy
  3. Работа с файлами в Python
  4. Хешируемые ключи в Python
  5. Создание файла с проверкой ошибки
  6. Управление асинхронными задачами на Python.
  7. Основы слова
  8. Декоратор total_ordering для класса Point
  9. Логические значения в Python
  10. Работа с collections в Python
  11. Расчет времени выполнения программы
  12. Изменения в обработке логических значений
  13. Подсчет элементов с помощью Counter из collections
  14. Конкатенация строк в Python
  15. Создание комплексных чисел
  16. Итерация по копии коллекции
  17. Сравнение def и lambda функций в Python
  18. Вложенные генераторы в Python
  19. Операторы объединения в Python 3.9
  20. F-строки в Python 3.8
  21. Упрощение работы с JSON-данными в Python
  22. Метод join() для объединения элементов в строку.
  23. Бесконечные списки в Python
  24. Фильтрация списка чисел
  25. Объединение списков с использованием itertools.chain
  26. Модуль future Python
  27. Вычисление логарифмов в Python
  28. Парсинг статей с Newspaper3k
  29. Хранение переменных в словаре.
  30. Python Аргументы по умолчанию
  31. Flask: создание веб-приложений
  32. Хранение переменных в Python.
  33. Курс по дообучению ChatGPT
  34. Функция pow() — возвести число в степень
  35. Получение размера объекта с sys.getsizeof()
  36. Обработка ошибок ввода данных
  37. Оператор in и not in в Python
  38. Вложенные функции в Python
  39. Философия Python
  40. Функции-генераторы в Python
  41. Многострочные комментарии в Python
  42. Функциональное программирование.
  43. Модуль itertools: комбинации и перестановки
  44. Просмотр файла в Jupyter Noteboo

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