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
循环中。这段代码可以很容易地复用于其他需要生成一系列数字的场景。