首頁 >後端開發 >Python教學 >Python 的 __iter__ 和 __next__ 方法如何啟用迭代器建立?

Python 的 __iter__ 和 __next__ 方法如何啟用迭代器建立?

Patricia Arquette
Patricia Arquette原創
2025-01-02 19:19:43848瀏覽

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

在Python 中建立迭代器

Python 迭代器是遵守迭代器協定的對象,具有__iter__() 和__next__( )

iter方法:

__iter__() 方法傳回迭代器對象,在循環開始時自動呼叫。

下一個方法:

__next__() 方法會擷取後續值,並在循環增量期間隱含呼叫。當沒有更多值可用時,它會引發 StopIteration 異常,循環結構會偵測到該異常並用於停止迭代。

例如,考慮以下簡單的計數器類別:

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

當利用計數器:

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

輸出將be:

3
4
5
6
7
8

或者,生成器提供了一種更簡單的迭代器創建方法:

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

使用生成器:

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

產生相同的輸出。在內部,生成器類似於 Counter 類,支援迭代器協定。

有關迭代器的全面概述,請參閱 David Mertz 的文章「迭代器和簡單產生器」。

以上是Python 的 __iter__ 和 __next__ 方法如何啟用迭代器建立?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn