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
相关文档: