gpt4 book ai didi

python - 为什么在 Python 的 `continue` 子句中不允许 `finally`?

转载 作者:IT老高 更新时间:2023-10-28 21:38:02 25 4
gpt4 key购买 nike

以下代码引发语法错误:

>>> for i in range(10):
... print i
... try:
... pass
... finally:
... continue
... print i
...
File "<stdin>", line 6
SyntaxError: 'continue' not supported inside 'finally' clause

为什么 finally 子句中不允许使用 continue 语句?

附:另一方面,其他代码没有问题:

>>> for i in range(10):
... print i
... try:
... pass
... finally:
... break
...
0

如果重要的话,我使用的是 Python 2.6.6。

最佳答案

在 finally 子句中使用 continue 是被禁止的,因为它的解释会有问题。如果由于异常而执行 finally 子句,你会怎么做?

for i in range(10):
print i
try:
raise RuntimeError
finally:
continue # if the loop continues, what would happen to the exception?
print i

我们可以决定这段代码应该做什么,也许吞下异常;但良好的语言设计表明并非如此。如果代码让读者感到困惑,或者如果有更清晰的方式来表达预期的逻辑(可能使用 try: ... except Exception: pass; continue),那么将其保留为语法错误

有趣的是,您可以将 return 放在 finally 子句中,它会吞下所有异常,包括 KeyboardInterruptSystemExit内存错误。这可能也不是一个好主意;-)

关于python - 为什么在 Python 的 `continue` 子句中不允许 `finally`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com