Maison > développement back-end > Tutoriel Python > Comment les méthodes `__iter__` et `__next__` de Python permettent-elles la création d'itérateurs ?

Comment les méthodes `__iter__` et `__next__` de Python permettent-elles la création d'itérateurs ?

Patricia Arquette
Libérer: 2025-01-02 19:19:43
original
838 Les gens l'ont consulté

How Do Python's `__iter__` and `__next__` Methods Enable Iterator Creation?

Création d'itérateurs en Python

Les itérateurs Python sont des objets qui adhèrent au protocole itérateur, comportant les méthodes __iter__() et __next__().

iter Méthode :

La méthode __iter__() renvoie l'objet itérateur, automatiquement invoqué au début des boucles.

next Méthode :

La méthode __next__() récupère la valeur suivante et est implicitement appelée lors des incréments de boucle. Il déclenche une exception StopIteration lorsqu'aucune valeur n'est disponible, qui est détectée par les constructions de boucle et utilisée pour arrêter l'itération.

Par exemple, considérons la classe de compteur simpliste suivante :

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
Copier après la connexion

Quand en utilisant le compteur :

for c in Counter(3, 9):
    print(c)
Copier après la connexion

Le résultat sera :

3
4
5
6
7
8
Copier après la connexion

Alternativement, les générateurs offrent une approche plus simple de la création d'itérateurs :

def counter(low, high):
    current = low
    while current < high:
        yield current
        current += 1
Copier après la connexion

Emploi du générateur :

for c in counter(3, 9):
    print(c)
Copier après la connexion

Produit une sortie identique. En interne, le générateur ressemble à la classe Counter, prenant en charge le protocole itérateur.

Pour un aperçu complet des itérateurs, veuillez vous référer à 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal