请教Raise StopIteration
class Fibs:def __init__(self,n = 20):
self.a = 0
self.b = 1
self.n = n
def __iter__(self):
return self
def __next__(self):
self.a,self.b = self.b,self.a + self.b
if self.a > self.n:
raise StopIteration
return self.a
>>> fibs = Fibs()
>>> for each in fibs:
print(each)
1
1
2
3
5
8
13
>>>
当满足self.a > self.n时 抛出raise StopIteration 是不是就不执行 return self.a了 所以就打印到13 StopIteration是告诉for结束循环 TCY 发表于 2019-1-2 20:55
StopIteration是告诉for结束循环
raise StopIteration 不应该会抛出一个异常吗?为什么运行的时候只是自动结束迭代,并没有抛出异常? jiajiaself 发表于 2020-3-4 16:15
raise StopIteration 不应该会抛出一个异常吗?为什么运行的时候只是自动结束迭代,并没有抛出异常?
StopIteration会被for循环捕捉到 很好的问题,我也注意到了,有点像break的效果
页:
[1]