python生成器怎么判断迭代结束
时间: 2023-10-04 22:05:31 浏览: 104
在 Python 中,生成器通常使用 `yield` 语句来产生值。当生成器函数执行到最后一个 `yield` 语句时,它会自动抛出一个 `StopIteration` 异常,表示迭代结束。
如果你使用 `next()` 函数来迭代生成器,当生成器抛出 `StopIteration` 异常时,`next()` 函数会捕获该异常并停止迭代。你也可以使用 `for` 循环来迭代生成器,在迭代过程中,当生成器抛出 `StopIteration` 异常时,`for` 循环会自动停止迭代。
下面是一个简单的示例,演示如何使用 `for` 循环来迭代生成器,以及如何捕获 `StopIteration` 异常:
```python
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator()
for value in gen:
print(value) # 输出 1, 2, 3
# 或者使用 next() 函数来迭代生成器
gen = my_generator()
while True:
try:
value = next(gen)
print(value)
except StopIteration:
break
```
在这个示例中,我们定义了一个名为 `my_generator` 的生成器函数,它包含三个 `yield` 语句。我们通过 `for` 循环和 `next()` 函数来迭代生成器,直到生成器抛出 `StopIteration` 异常时结束迭代。