Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda O Protocolo de Iterador | Python Iterators
Conceitos de Programação Funcional em Python

bookO Protocolo de Iterador

Deslize para mostrar o menu

Em Python, o protocolo de iterador é um conjunto de métodos que permite que objetos sejam iterados, tornando-os compatíveis com estruturas como o laço for. Os dois métodos essenciais envolvidos são __iter__ e __next__. Quando você utiliza um laço for em um objeto, o Python chama internamente o método __iter__ do objeto para obter um iterador. Esse iterador deve possuir um método __next__, que retorna o próximo item da sequência a cada chamada. Quando não houver mais itens, __next__ deve lançar uma exceção StopIteration para sinalizar o fim da sequência.

1234567891011121314151617181920212223242526
class SquaresIterator: # Initialize with the number of squares to generate def __init__(self, limit): self.limit = limit self.current = 0 # Return the iterator object (itself) def __iter__(self): return self # Return the next square, or stop if done def __next__(self): if self.current < self.limit: # Calculate square result = self.current ** 2 # Move to next number self.current += 1 return result # If no more items else: raise StopIteration for square in SquaresIterator(5): print(square)
copy

__init__ - Fase de Configuração

Quando o iterador é criado, ele recebe:

  • limit → quantidade de números a serem gerados;

  • Define current = 0 → ponto inicial;

  • Prepara tudo o que é necessário para a iteração.

__iter__ - Tornando-o Iterável

  • Retorna self (o próprio objeto);
  • Isso é o que permite usá-lo em um loop for.

__next__ - Produzindo Valores

Este método é executado toda vez que o loop solicita o próximo item:

  • Se current < limit:
    • Calcular current²;
    • Aumentar current em 1;
    • Retornar o resultado.
  • Se currentlimit:
    • Lançar StopIteration para encerrar o loop automaticamente.
question mark

Qual das alternativas a seguir é necessária para que um objeto seja considerado iterável em Python?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 5. Capítulo 3
some-alt