Курс 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"
- Передача словаря через **kwargs
- Скачать видео с YouTube
- Повторение элементов списков
- Оператор in в Python
- Участие в LP стейкинге Waves
- Абстракции словарей и множеств в Python
- Тестирование функции сложения
- Простой калькулятор Python
- Оператор space-invader
- Принципы LSP и ISP в Python
- Python UserString — создание подклассов строк
- Ветвление выражения в Python
- Обработка ошибок ввода данных
- Dict Comprehension в Python
- Показ всплывающих окон Tkinter
- Замыкания в Python
- Фильтрация данных в Python.
- Функции классификации комплексных чисел
- Работа с контекст-менеджером «with»
- Запуск файлового сервера
- Изменение элемента списка
- Поиск с библиотекой Google
- Оптимизация поиска в словарях
- Применение промокода в Много лосося
- Использование модуля __future__
- Удаление дубликатов в pandas
- Метод __irshift__ для Python
- Векторизация в Python с NumPy.
- EMOT преобразование эмодзи в текст
- Построение графиков в Matplotlib
- Создание и обучение модели с Keras
- Использование модуля math
- Анализ кода — Python
- Измерение времени выполнения с помощью time
- Создание списков в Python
- Оформление текста в консоли с TermColor
- Удаление элемента по индексу в Python
- Конкатенация строк в Python
- Правила именования переменных
- Обработка ошибок в JSON данных
- Отображение HTML кода в Python
- Избегайте изменяемых аргументов
- Поиск самого частого элемента















