Sobes.tech
Junior — Middle
82

Արդյո՞ք անհրաժեշտ է օգտագործել yield բանալի բառը Python-ում կոնտեքստային մենեջերի իրականացման ժամանակ։

Ընկերությունները, որտեղ հարցրել են
AstonAston

Պատասխան 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 не используется.