Python PEP 479是一项提案,旨在更改Python生成器中StopIteration异常的处理方式
▥Python
𝄐 0
python编程,python安装教程,python在线咨询,python123,python编程有什么用,python下载
Python PEP 479是一项提案,旨在更改Python生成器中StopIteration异常的处理方式。在该提案中,当生成器被暂停或恢复时,如果出现StopIteration异常,则将其视为GeneratorExit异常,并且自动屏蔽它以避免引起任何不必要的警告或异常。
更具体地说,这意味着在 Python 3.7 及以前的版本中,在生成器中使用 StopIteration 通常会产生警告或其他错误。然而,根据 PEP 479 的建议,从 Python 3.7 开始,这种行为将被修正,即使在生成器中使用 StopIteration 也不会引发警告或错误。
下面是一个示例,演示了如何在Python 3.6及之前的版本中使用StopIteration引发异常:
def my_generator():
yield 1
yield 2
raise StopIteration
for i in my_generator():
print(i)
输出:
1
2
Traceback (most recent call last):
File "example.py", line 6, in <module>
for i in my_generator():
StopIteration
在上述示例中,我们定义了一个名为my_generator的生成器函数,它每次迭代都会产生两个值(1和2),然后抛出StopIteration异常以退出迭代。但是,在Python 3.6及之前的版本中,这将导致程序引发异常并终止运行。
在 Python 3.7 及以后的版本中,如果我们运行相同的代码,输出将只包含1和2,并且不会引发任何异常。
Python PEP 479是一项提案,旨在更改Python生成器中StopIteration异常的处理方式。在该提案中,当生成器被暂停或恢复时,如果出现StopIteration异常,则将其视为GeneratorExit异常,并且自动屏蔽它以避免引起任何不必要的警告或异常。
更具体地说,这意味着在 Python 3.7 及以前的版本中,在生成器中使用 StopIteration 通常会产生警告或其他错误。然而,根据 PEP 479 的建议,从 Python 3.7 开始,这种行为将被修正,即使在生成器中使用 StopIteration 也不会引发警告或错误。
下面是一个示例,演示了如何在Python 3.6及之前的版本中使用StopIteration引发异常:
def my_generator():
yield 1
yield 2
raise StopIteration
for i in my_generator():
print(i)
输出:
1
2
Traceback (most recent call last):
File "example.py", line 6, in <module>
for i in my_generator():
StopIteration
在上述示例中,我们定义了一个名为my_generator的生成器函数,它每次迭代都会产生两个值(1和2),然后抛出StopIteration异常以退出迭代。但是,在Python 3.6及之前的版本中,这将导致程序引发异常并终止运行。
在 Python 3.7 及以后的版本中,如果我们运行相同的代码,输出将只包含1和2,并且不会引发任何异常。
本文地址:
/show-275070.html
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。