Курс 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"
- Декоратор Property в Python
- Combobox в Tkinter
- JMESPath в Python
- Проверка элемента в множестве.
- Форматирование чисел в Python
- Создание новых списков через list comprehensions
- Декодирование байтов в строку
- Пропуск строк в файле с itertools
- Библиотека Rich: форматирование текста
- Удаление символа из строки
- Работа с срезами в Python
- Отладка кода
- Настройка шрифта и цвета в Tkinter
- Декораторы в Python
- Функция rsplit() в Python
- Функция reduce() из модуля functools
- Методы в Python
- Импорт объектов из модулей
- Принципы Zen of Python
- Сортировка слиянием
- Структуры данных в Python
- Создание даты из строки ISO
- Переменные в Python: сокращение гласных
- Очистка данных в Python
- Копирование списков в Python
- Цикл for в Python
- Расширение операции побитового «и» в Python
- Основные функции и модули Python
- Решение переменной Шредингера
- Методы HTTP запросов в Flask
- Удаление файлов с shutil.os.remove()
- Операции с датами в Python
- Работа с комплексными числами
- Работа с Event() в threading
- Конкатенация строк в Python
- Измерение потребления памяти при сортировке
- Вложенные функции в Python
- Метод __ixor__ для побитового исключающего ИЛИ
- Codecademy в Telegram
- Функции в одну строку
- Создание списка через итерацию
- Принципы SRP и OCP
- Генераторы в Python
- Управление пакетами с pip
- Генераторы данных















