Python的迭代器協議通過定義一個標準的方法集合,使得不同的對象可以以統一的方式被迭代。這個協議主要包含兩個方法:__iter__()
和 __next__()
。__iter__()
方法返回迭代器對象本身,而 __next__()
方法返回容器的下一個值。當容器中沒有更多元素時,__next__()
應該拋出 StopIteration
異常。
迭代器協議提高代碼復用性的方式主要體現在以下幾個方面:
for
循環。這意味著你可以編寫一段通用的代碼來處理任何實現了迭代器協議的迭代對象,而不需要關心對象的具體類型。下面是一個簡單的示例,展示了如何使用迭代器協議來提高代碼復用性:
class MyRange:
def __init__(self, start, end):
self.start = start
self.end = end
def __iter__(self):
return self
def __next__(self):
if self.start >= self.end:
raise StopIteration
current = self.start
self.start += 1
return current
# 使用自定義的 MyRange 類作為迭代器
for i in MyRange(0, 5):
print(i)
# 輸出:
# 0
# 1
# 2
# 3
# 4
在這個示例中,MyRange
類實現了迭代器協議,因此可以被用于 for
循環中。這段代碼可以很容易地復用于其他需要生成一系列數字的場景。