Oiii Ruy, tudo bem?
Peço perdão pela demora em obter um retorno. Vamos lá:
Um iterável é um objeto que podemos percorrê-lo, possibilitando a repetição sobre cada elemento, mas ele não necessariamente é um iterador. No Python, um objeto é considerado iterável se ele implementa o método __iter__
, permitindo, por exemplo, que um loop for
seja executado sobre ele.
Já um iterador é sempre um iterável, mas que produz um valor a cada vez que é usado, que é o chamamos de Lazy Evaluation
ou avaliação preguiçosa
. E para ser um iterador em Python, a função tem que obrigatoriamente implementar o método __next__
.
Para sabermos se o objeto criado pelo comando open("palavras.txt", "r")
é um iterador, podemos utilizar o comando hasattr
, que verifica se o objeto possui determinado atributo. Veja:
objeto = open("palavras.txt", "r")
print(hasattr(objeto, '__next__'))
Resultado: True
Com isso, confirmamos que esse objeto é sim um iterador, pois implementa o método __next__
.
Vou deixar como complemento, um artigo aqui da Alura sobre esse assunto:
Qualquer dúvida estou por aqui, tá bom?
Abraços e bons estudos!