Sobes.tech
Junior — Middle
63

Необходимо ли применять ключевое слово yield внутри реализации контекстного менеджера в Python?

Companies where asked
AstonAston

Answer from AI

sobes.tech AI

Ключевое слово yield необходимо использовать внутри реализации контекстного менеджера, если вы создаёте его с помощью декоратора @contextmanager из модуля contextlib.

Пример:

from contextlib import contextmanager

@contextmanager
def open_file(path):
    f = open(path, 'r')
    try:
        yield f  # передаём управление и ресурс
    finally:
        f.close()

Здесь yield разделяет код на две части: до yield — подготовка ресурса, после — очистка.

Если же контекстный менеджер реализован через класс с методами __enter__ и __exit__, то yield не используется.