¿Qué imprime esto?
def inner():
yield 1
yield 2
def outer():
yield 0
yield from inner()
yield 3
print(list(outer()))Opciones
- [0, <generator>, 3]
- [0, 1, 2, 3] (Opción correcta)
- [0, 3]
- [0, [1, 2], 3]
Respuesta
[0, 1, 2, 3]
Por qué
yield from inner() pasa cada valor que produce inner(), como si outer() lo hubiera producido.
Así que obtenemos 0, luego 1 y 2 de inner, y luego 3.
Recuerda
yield from = cede el turno a otro generator.