Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida conceitual

Boa noite,

Minha dúvida é: o objeto criado pelo comando open("palavras.txt", "r") pode ser considerado um iterador (iterator)? já estudei sobre iteradores em um outro curso sobre python e o comportamento do read() é parecido com o de um iterador, eles conceitualmente são semelhantes?

2 respostas
solução!

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!

Muito obrigado Nádia, explicou muito bem e obrigado pelo artigo