Iterator是python中的一个实现迭代协议的对象。元组,列表,集合在Python中称为内置迭代器。迭代协议中有两种方法。
__iter __():当我们初始化迭代器时,将调用此方法,并且此方法必须返回一个由next()
__next __()(在Python 3中)方法组成的对象。
next()或__next __()(在Python 3中):此方法应返回迭代序列中的下一个元素。当迭代器与for循环一起使用时,for循环直接next()
在迭代器对象上调用。
# creating a custom iterator class Pow_of_Two: def __init__(self, max = 0): self.max = max def __iter__(self): self.n = 0 return self def __next__(self): if self.n <= self.max: result = 2 ** self.n self.n += 1 return result else: raise StopIteration("Message") a = Pow_of_Two(4) i = iter(a) print(i.__next__()) print(next(i)) print(next(i)) print(next(i)) print(next(i)) print(next(i))
输出结果
1 2 4 8 16 StopIteration error will be raised