在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中文網其他相關文章!