迭代器的用法在python中普遍而且统一。for语句在容器对象中调用iter()。该函数返yige回一个定义了next()方法的迭代器对象,它在容器中逐一访问元素。没有后续元素时,next()抛出一个StopIteration异常通知for语句循环结束。
字符串、元组、列表都可用来创建迭代器,迭代器只往前不后退。
我们可以通过这个机制,来给我们自己的类添加迭代器行为:
#添加迭代器行为,从后向前迭代
class BackWard:
def __init__(self, data):
self.data = data
self.len = len(data)
def __iter__(self):
return self
def __next__(self):
if self.len < 0:
raise StopIteration
self.len = self.len - 1
return self.data[self.len]
string = "ilovemoney"
back = BackWard(string)
for n in back:
print(n)