Heim >Backend-Entwicklung >Python-Tutorial >Wie ermöglichen die Python-Methoden „__iter__' und „__next__' die Erstellung von Iteratoren?

Wie ermöglichen die Python-Methoden „__iter__' und „__next__' die Erstellung von Iteratoren?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-02 19:19:43907Durchsuche

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

Erstellen von Iteratoren in Python

Python-Iteratoren sind Objekte, die dem Iteratorprotokoll entsprechen und über die Methoden __iter__() und __next__() verfügen.

iter Methode:

Die Methode __iter__() gibt das Iteratorobjekt zurück, das automatisch zu Beginn von Schleifen aufgerufen wird.

nextMethode:

Die Methode __next__() ruft den nachfolgenden Wert ab und wird implizit während der Schleife aufgerufen Inkremente. Es löst eine StopIteration-Ausnahme aus, wenn keine weiteren Werte verfügbar sind, die von Schleifenkonstrukten erkannt und zum Beenden der Iteration verwendet wird.

Betrachten Sie beispielsweise die folgende vereinfachte Zählerklasse:

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

When Verwendung des Zählers:

for c in Counter(3, 9):
    print(c)

Die Ausgabe ist:

3
4
5
6
7
8

Alternativ Generatoren bieten einen einfacheren Ansatz zur Iteratorerstellung:

def counter(low, high):
    current = low
    while current < high:
        yield current
        current += 1

Einsatz des Generators:

for c in counter(3, 9):
    print(c)

Erzeugt eine identische Ausgabe. Intern ähnelt der Generator der Counter-Klasse und unterstützt das Iterator-Protokoll.

Eine umfassende Übersicht über Iteratoren finden Sie im Artikel „Iteratoren und einfache Generatoren“ von David Mertz.

Das obige ist der detaillierte Inhalt vonWie ermöglichen die Python-Methoden „__iter__' und „__next__' die Erstellung von Iteratoren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn