Python · Intermediário · Inglês · Técnico
generator
Função com yield, ou expressão entre parênteses, que produz valores um de cada vez, sob demanda, sem montar a coleção inteira na memória.
Onde usar
Usado para processar arquivos grandes ou fluxos de dados linha a linha. O ganho é memória constante, e o custo é que o gerador só pode ser percorrido uma vez.
Em código
def contar(ate):
n = 0
while n < ate:
yield n
n += 1
print(list(contar(3)))Exemplos
Make it a generator so we don't load the whole file.
Faça disso um generator para não carregar o arquivo inteiro.
The generator is already exhausted, so the loop does nothing.
O generator já foi esgotado, então o laço não faz nada.
Cuidado
Não confunda com list comprehension: a de colchetes cria a lista inteira na hora, enquanto o generator é preguiçoso e se esgota depois de consumido.
Sinônimos
gerador