Python · Avançado · Inglês · Técnico
yield from
Forma de um generator delegar a produção de valores a outro iterável ou generator, repassando os itens, os valores enviados e as exceções, sem escrever um laço.
Onde usar
Simplifica generators recursivos, como percorrer uma árvore, e foi a base histórica das corrotinas antes do async/await. Em código atual aparece sobretudo para achatar estruturas.
Em código
def achatar(xs):
for x in xs:
if isinstance(x, list):
yield from achatar(x)
else:
yield x
print(list(achatar([1, [2, [3]]])))Exemplos
Use yield from to delegate to the sub-generator.
Use yield from para delegar ao sub-generator.
The recursion flattens the tree with yield from.
A recursão achata a árvore com yield from.
Cuidado
Em código novo, não use yield from para esperar corrotinas assíncronas; o certo é await.