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