Coletânea Python do ZERO às Redes Neurais Artificiais
Geradores e Iteradores
Antes de entender de fato como funcionam os métodos geradores em Python, vamos dar uma breve recapitulada no conceito de objeto iterável.
Se você chegou a este ponto, certamente sabe que quando estamos
falando de iterações estamos falando, por mais redundante que isso seja, de interações.
Logo, um objeto iterável é aquele tipo de objeto ao qual podemos interagir com seus elementos, cada elemento de sua composição.
Aqui, por exemplo, temos uma variável de nome minha_lista que, como
esperado, recebe como atributo uma lista de elementos.
Por meio da função hasattr( ) podemos verificar se internamente
minha_lista possui o método __iter__, lembrando que muita coisa em Python é implícita, pré-construída e pré-carregada automaticamente assim que criamos qualquer variável/objeto, classe, método/função.
Todo objeto iterável em Python internamente possui em sua composição o método __iter__ como um sinalizador para que o interpretador permita o instanciamento e uso de todo e qualquer dado deste objeto.
Sendo assim, aproveitando esse exemplo, como minha_lista é um objeto
iterável, podemos usar do laço for para que realizemos a leitura de cada um dos elementos que compõem minha_lista.
Como era de se esperar, como retorno para hasattr( ) temos True,
seguido do retorno do laço for, mostrando a cada laço um elemento de minha_lista.
Lembrando que um iterável por si só é um tipo de dado, em
determinados casos, podemos definir manualmente que um certo objeto é um iterador por meio de iter( ).