1、StopIteration
如果有足够的next()语句,或者如果在for
循环中使用了该语句,则以上示例将永远继续下去。
为了防止迭代永远进行,我们可以使用StopIteration
语句。
在__next__()
方法中,如果迭代执行了指定的次数,我们可以添加终止条件以引发错误:
例如:
在20次循环后停止:
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): if self.a <= 20: x = self.a self.a += 1 return x else: raise StopIteration myclass = MyNumbers() myiter = iter(myclass) for x in myiter: print(x)
# 首先获得Iterator对象: it = iter([1, 2, 3, 4, 5]) # 循环: while True: try: # 获得下一个值: x = next(it) except StopIteration: # 遇到StopIteration就退出循环 break
相关文档: