raise StopIteration是什么
时间: 2023-07-10 08:35:14 浏览: 262
`StopIteration` 是一个内置异常类,用于在迭代器(Iterator)没有更多元素可供迭代时引发异常。当我们在使用 `next()` 方法迭代一个迭代器时,如果已经到达了迭代器的末尾,再次调用 `next()` 方法就会引发 `StopIteration` 异常。
例如,我们可以使用以下代码创建一个简单的迭代器,用于生成斐波那契数列的前 n 个数:
```python
class Fibonacci:
def __init__(self, n):
self.n = n
self.current = 0
self.next = 1
self.counter = 0
def __iter__(self):
return self
def __next__(self):
if self.counter >= self.n:
raise StopIteration
else:
result = self.current
self.current, self.next = self.next, self.current + self.next
self.counter += 1
return result
```
在上面的代码中,我们重载了迭代器对象的 `__next__()` 方法,当迭代器到达指定的元素个数后,就会引发 `StopIteration` 异常,从而停止迭代。
在使用迭代器时,我们通常会使用 `for` 循环来迭代元素,而不是直接调用 `next()` 方法。在 `for` 循环中,当迭代器引发 `StopIteration` 异常时,循环会自动停止,不会抛出异常。
例如,我们可以使用以下代码来迭代上面定义的迭代器对象:
```python
fib = Fibonacci(5)
for num in fib:
print(num)
```
输出结果为:
```
0
1
1
2
3
```
阅读全文