Python 3.12 引入了一系列显著的特性和改进,进一步提升了开发者的体验和语言的性能。该版本在错误消息方面做了重要改进,提供了更详细且富有指导性的提示,帮助开发者更快定位问题。格式化字符串(f-strings)的功能也得到了增强,允许更强大的字符串格式化。
在性能优化方面,Python 3.12 继续推进
faster-cpython
项目,通过加速和专门化字节码执行,显著提升了代码的运行速度。该版本还改进了列表推导和其他推导操作的执行效率,使得数据处理更加高效。
此外,Python 3.12 支持 Linux perf Profiler,为性能分析提供了更多工具。每个子解释器现在配备独立的 GIL(全局解释器锁),提高了并发性能。新增了不可变对象和用于显式继承的覆盖装饰器,并引入了
itertools.batched()
方法以便将可迭代对象中的项目分组,以及改进了
Path.walk()
方法以列出文件和子目录。这些改进进一步增强了 Python 作为开发语言的功能性和灵活性。
改进的错误消息
在 Python 3.10 中,许多错误消息,尤其是语法错误消息,变得更加详细和准确。同样,Python 3.11 在追踪回溯信息中增加了更多内容,使得定位出错代码变得更加方便。
最新版本的 Python 3.12 继续改善开发者体验,提供了更好的错误消息。特别是一些常见的错误消息现在附带了有用的建议。
当您在没有先导入 math 的情况下使用它时,您会得到一个传统的 NameError。此外,解析器会帮助提醒您在访问 math 之前需要导入它。
关于提示导入模块的提醒仅适用于标准库模块。对于这些错误消息,Python 3.12 不会跟踪安装的第三方包。
目前由于ipython有字节错误处理机制,提示导入包在ipython 里面没有实现。
可以使用 from-import 语句从模块中导入特定名称。如果您不小心将关键字的顺序颠倒了,现在会得到一个友好的提示,指导您使用正确的语法:
看看如果您从 math 模块导入 py 而不是 pi 会发生什么:
更强大的 F-string
格式化字符串,简称 f-string,是在 PEP 498 和 Python 3.6 中引入的。通过 f-string,Python 增加了字符串格式化功能。您可以通过前导的 f 来识别 f-string,如以下示例:
关于F-String 在python 3.12 新特征,可以参考:
《一文带您了解F-string:解锁Python3.12下F-string的新特性》
更快的 Python:更多专门化和内联列表推导