Проверяет понимание делегирования генераторов в Python с помощью yield from.
yield from — это конструкция в Python, которая позволяет одному генератору делегировать часть своей работы другому генератору. Она появилась в Python 3.3 и значительно упрощает работу с вложенными генераторами.
Когда генератор использует yield from, он приостанавливает своё выполнение и передаёт управление другому генератору. Все значения, которые производит вложенный генератор, передаются напрямую вызывающему коду. После завершения вложенного генератора управление возвращается к исходному генератору.
def generator1():
for value in generator2():
yield value
def generator2():
yield 1
yield 2
for item in generator1():
print(item) # 1, 2def generator1():
yield from generator2()
def generator2():
yield 1
yield 2
for item in generator1():
print(item) # 1, 2Как видно, yield from делает код более лаконичным и читаемым.
yield from также поддерживает двустороннюю связь: данные, отправленные в генератор через send(), и исключения, переданные через throw(), автоматически передаются вложенному генератору. Это особенно полезно при работе с корутинами.
yield from следует применять, когда нужно делегировать выполнение другому генератору, особенно при создании сложных цепочек генераторов или корутин. Это делает код чище и уменьшает дублирование.