Sobes.tech
Назад к вопросам
Junior — Middle
66

Каким образом реализовать собственный менеджер контекста в Python, оформленный в виде функции?

Ответ от нейросети

sobes.tech AI

В Python можно создать собственный менеджер контекста в виде функции с помощью декоратора contextlib.contextmanager. Это позволяет использовать конструкцию with для управления ресурсами.

Пример простого менеджера контекста, который выводит сообщения при входе и выходе из блока:

from contextlib import contextmanager

@contextmanager
def my_manager():
    print("Вход в контекст")
    try:
        yield  # точка, где выполняется тело with
    finally:
        print("Выход из контекста")

# Использование:
with my_manager():
    print("Внутри блока with")

Вывод будет:

Вход в контекст
Внутри блока with
Выход из контекста

Таким образом, yield разделяет код на две части: до yield — код инициализации, после — код очистки. Это удобный способ создавать менеджеры контекста без написания класса с методами __enter__ и __exit__.