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