Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende El Protocolo de Iterador | Python Iterators
Conceptos de Programación Funcional en Python

bookEl Protocolo de Iterador

Desliza para mostrar el menú

En Python, el protocolo de iterador es un conjunto de métodos que permite que los objetos sean iterados, haciéndolos compatibles con construcciones como los bucles for. Los dos métodos esenciales involucrados son __iter__ y __next__. Cuando se utiliza un bucle for sobre un objeto, Python llama internamente al método __iter__ del objeto para obtener un iterador. Este iterador debe tener un método __next__, que devuelve el siguiente elemento de la secuencia cada vez que se llama. Cuando no hay más elementos, __next__ debe lanzar una excepción StopIteration para señalar el final de la secuencia.

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 configuración

Cuando se crea el iterador, recibe:

  • limit → cuántos números generar;

  • Establece current = 0 → el punto de inicio;

  • Prepara todo lo necesario para la iteración.

__iter__ - Haciendo el objeto iterable

  • Devuelve self (el propio objeto);
  • Esto es lo que permite usarlo en un bucle for.

__next__ - Producción de valores

Este método se ejecuta cada vez que el bucle solicita el siguiente elemento:

  • Si current < limit:
    • Calcular current²;
    • Incrementar current en 1;
    • Devolver el resultado.
  • Si currentlimit:
    • Lanzar StopIteration para detener el bucle automáticamente.
question mark

¿Cuál de las siguientes opciones es necesaria para que un objeto se considere iterable en Python?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 5. Capítulo 3
some-alt