Курс 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"
- Методы list в Python
- EMOT преобразование эмодзи в текст
- Создание и операции с дробями
- Работа с датой и временем в Python
- Метод rmatmul для пользовательских матриц
- Глобальные переменные в Python
- Переменная с нижним подчеркиванием
- Перевод эмодзи и эмотиконов.
- Очистка данных с помощью pandas
- Оператор in и not in в Python
- Модуль subprocess: запуск внешних команд
- Извлечение аудио из видео
- Прокачанный трейсинг ошибок
- Хранение переменных в словаре.
- Работа со строками в Python
- Методы сравнения множеств
- Имена объектов в Python
- Автоматизация с Python
- Транспонирование матрицы
- Основы работы со списками
- Инвертирование словаря
- Проверка элементов списка условием
- Комментарии в Python
- Операции с комплексными числами
- Переменные класса и экземпляра
- Модуль itertools: эффективная работа с итераторами
- Оператор «is not» в Python
- Просмотр файла в Jupyter Noteboo
- Абстракции словарей и множеств в Python
- Оптимизация гиперпараметров с Scikit Optimize
- TypedDict для kwargs в Python 3.12
- Ускорение выполнения кода в Python
- Python Enumerate
- Определение основы слова с showballstemmer
- Работа с комбинациями в Python.
- Добавление Progressbar в Python
- Подсчет частотности элементов в Python
- Именованные аргументы в Python
- Циклы в Python
- Python: библиотеки и функции
- Работа с deque в Python
- CLI-инструмент howdoi
- Списки: объединение, изменение















