Créer un itérateur en Python
Construire un itérateur en Python nécessite d'implémenter le protocole itérateur, qui spécifie deux méthodes essentielles : __iter__() et __suivant__(). Ces méthodes définissent comment les objets peuvent s'initialiser et parcourir une séquence de valeurs.
Comprendre le protocole itérateur
Dans __iter__(), l'objet itérateur est renvoyé, qui est généralement appelé implicitement au début des boucles. __next__() est la méthode principale qui renvoie la valeur suivante dans la séquence. Pour les utilisateurs de Python 2, cette méthode est connue sous le nom de next(). Lorsque toutes les valeurs sont épuisées, __next__() déclenche une exception StopIteration, que les constructions en boucle capturent pour terminer l'itération.
Un exemple : le compteur itérateur
Créons un simple Itérateur de compteur qui génère des valeurs dans une plage spécifiée :
class Counter: def __init__(self, low, high): self.current = low - 1 self.high = high def __iter__(self): return self def __next__(self): # Python 2: def next(self) self.current += 1 if self.current < self.high: return self.current raise StopIteration # Usage: for c in Counter(3, 9): print(c)
Cela produira ce qui suit sortie :
3 4 5 6 7 8
Utilisation de générateurs pour les itérateurs
Les générateurs offrent un mécanisme alternatif pour créer des itérateurs. Les fonctions du générateur génèrent des valeurs une à la fois, implémentant efficacement le protocole de l'itérateur.
def counter(low, high): current = low while current < high: yield current current += 1 # Usage: for c in counter(3, 9): print(c)
Le code ci-dessus produit le même résultat que la classe Counter.
Ressources supplémentaires
Pour une compréhension complète des itérateurs, reportez-vous à des ressources telles que l'article de David Mertz « Itérateurs et générateurs simples ».
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!