Python › Comprehensions & Generators
How does 'yield from' delegate iteration to a sub-generator, and what does it return as its own expression value?
AdvancedAnswer
'yield from sub_generator' fully delegates yielding to the sub-generator, forwarding each of its values as if they were yielded directly by the outer generator — AND its expression evaluates to whatever the sub-generator eventually returns (via a 'return' statement), letting you compose generators while still capturing a final result.
def inner():
yield 1
yield 2
return "inner done"
def outer():
result = yield from inner()
print(result) # "inner done", printed after inner's values are yielded
yield 3
list(outer()) # yields 1, 2, 3; prints "inner done" in betweenReal-world example Composing a large generator out of smaller, reusable generator building blocks, similar to function composition.