
前一篇 Python 3.14 新特性学习(第一部分) 基本就是被 Python 3.14 标准库的多解释器霸屏,所以另起一篇继续 What's new in Python 3.14 中其他几个重要新特性。
PEP 765: finally 代码块中的控制流
编译器在检测到 finally 代码块存在 return
, break
, 或 continue
语句, 会触发 SyntaxWarning. 原因也很简单, 可以反问自己一句, 在 finally 放上 return, break, 或 continue 语句想干什么, 还想跳出 finally 语句块?
用 Python 3.13 和 3.14 测试下面的代码
1 2 3 4 5 6 7 8 |
def foo(): try: ... finally: return print(123) foo() |
分别用 python3.13 和 python3.14 执行
$python3.13 test.py
$python3.14 test.py
test.py:5: SyntaxWarning: 'return' in a 'finally' block
return
Python 3.14 以前不会有任何警告,但代码的执行结果是对的,只是在 return 后的代码是无效且多余的.