ExpertiDict

Python · Intermediário · Inglês · Técnico

generator

/ˈdʒɛnəˌɹeɪɾɚ/substantivo

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

Veja também

Todos os termos de Python