Junior — Middle
Szükséges-e a yield kulcsszó használata a Pythonban a kontextuskezelő implementációja során?
sobes.tech MI
Válasz az MI-től
Ключевое слово 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 не используется.