domingo, 6 de março de 2011

Python - Compreendendo o yield

O yield é uma keyword que aparece juntamente com um bloco de iteração, sinalizando ao compilador que o valor retornado por ele faz parte da coleção retornada pelo método principal.

Para compreender o que o yield faz, você primeiro deve compreender o que são geradores.

Iteradores

Quando você cria uma lista, você pode ler os itens um por um, e esse processo é chamado de iteração:

>>> minha lista = [1, 2, 3]
>>> for i in minha lista :
...    print(i)
1
2
3
minhalista é um iterador, quando você usa uma comprehension list, você cria uma lista e então um iterador:

>>> minhalista = [x*x for x in range(3)]
>>> for i in minhalista :
...    print(i)
0
1
4

Qualquer coisa que vc puder usar sobre um "for... in..." é um iterador: listas, strings, arquivos...



Geradores

Geradores são iteraveis, mas você pode apenas lê-los um por vez. Isso é porque eles não salvam os valores na memória.

>>> meugerador = (x*x for x in range(3))
>>> for i in meugerador :
...    print(i)
0
1
4


Yield

Yield é uma palavra-chave que é usada como o return, exceto que a função ira retornar um gerador.

>>> def Criargerador() :
...    minhalista = range(3)
...    for i in minhalista :
...        yield i*i
...
>>> meugerador = Criargerador()
>>> print(meugerador) # meugerador é um objeto

>>> for i in meugerador:
...     print(i)
0
1
4

Agistech.com.br

Nenhum comentário:

Postar um comentário