Sobes.tech
Junior — Middle

Оё зарур аст, ки калиди калиди yield дар иҷрои менеджери контекст дар Python истифода шавад?

sobes.tech AI

Ҷавоб аз 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 не се използва.