ExpertiDict

Python · Avançado · Inglês · Técnico

yield from

/jild fɹʌm/palavra-chave

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.

Veja também

Todos os termos de Python