Sobes.tech
Junior — Middle
97

Como implementar um gestor de contexto próprio em Python, apresentado na forma de uma função?

Resposta da IA

sobes.tech IA

В 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__.