如果“try”子句抛出语法,则Python的“finally”子句不会执行

2024-04-24 23:41:31 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑以下代码:

try:
    a = []
    a[4] = 4
except ZeroDivisionError:
    print('h')
finally:
    print('y')

输出显示finally子句已执行:

y
Traceback (most recent call last):
  File "work/finally.py", line 3, in <module>
    a[4] = 4
IndexError: list assignment index out of range

但是,如果我将try子句更改为以下内容:

[] += [] - []

那么finally子句就不会被执行:

  File "work/finally.py", line 2
    [] += [] - []
    ^
SyntaxError: illegal expression for augmented assignment

这种行为的原因是什么?我在哪能读到这些?我在文件里没找到。你知道吗


Tags: 代码pymostlinefileworkprinttry