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