21.12.2022 Views

python_para_desenvolvedores_2ed

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Geradores 95

Geradores

As funções geralmente seguem o fluxo convencional de processar, retornar

valores e encerrar. Geradores funcionam de forma similar, porém lembram o

estado do processamento entre as chamadas, permanecendo em memória e

retornando o próximo item esperado quando ativados.

Os geradores apresentam várias vantagens em relação às funções

convencionais:

▪ Lazy Evaluation: geradores só são processados quando é realmente

necessário, sendo assim, economizam recursos de processamento.

▪ Reduzem a necessidade da criação de listas.

▪ Permitem trabalhar com sequências ilimitadas de elementos.

Geradores geralmente são evocados através de um laço for. A sintaxe é

semelhante a da função tradicional, só que a instrução yield substitui o return.

A nova cada iteração, yield retorna o próximo valor.

Exemplo:

# -*- coding: latin-1 -*-

def gen_pares():

"""

Gera números pares infinitamente...

"""

i = 0

while True:

i += 2

yield i

# Mostra cada número e passa para o próximo

for n in gen_pares():

print n

Outro exemplo:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!