💡
原文英文,约800词,阅读约需3分钟。
📝
内容提要
PEP 765提议禁止在finally块中使用return、break和continue语句,以避免异常吞噬和混淆。该提案基于对现有代码的分析,显示这些用法罕见且易出错。计划在Python 3.14中发出SyntaxWarning,未来可能升级为SyntaxError,以提高代码安全性和可读性。
🎯
关键要点
- PEP 765提议禁止在finally块中使用return、break和continue语句,以避免异常吞噬和混淆。
- 该提案基于对现有代码的分析,显示这些用法罕见且易出错。
- 计划在Python 3.14中发出SyntaxWarning,未来可能升级为SyntaxError。
- 使用finally块中的控制流语句会导致意外的异常吞噬,增加了调试的难度。
- PEP 601曾提议发出SyntaxWarning,但被拒绝,认为这是编程风格问题。
- PEP 8建议不在finally块中使用控制流语句,多个linters会标记此类问题。
- 最近的分析显示,这些特性在实际代码中很少见,且大多数用法不正确。
- 代码所有者通常愿意修复这些错误,且修复过程相对简单。
- 提案中规定,Python编译器可能会在finally块中使用return、break或continue时发出SyntaxWarning或SyntaxError。
- 为了向后兼容,CPython将仅发出SyntaxWarning,暂时没有升级为错误的具体计划。
- 该警告/错误将帮助程序员避免难以发现的错误,从而具有安全性益处。
➡️