Python3.11.0正式版本预计于今年10月份发布,目前已发布了首个和第二个Beta版本;预计Beta阶段将会发布4个版本,下一个预发布版本3.11.0b3计划于年6月16日星期四发布。除了新的语言特性和其他改进之外,Python3.11看起来性能表现优异,相较之前的Python3.x版本有实现了非常好的提升。更多详情可查看Python官方文档。
鉴于此,科技媒体Phoronix针对Python3.11Beta1(测试时的最新开发版本)进行了一些性能基准测试。将Python3.11Beta的性能与早期版本进行了比较,包括Python3.10.4、Python3.9.13和Python3.8.13。所有这些Python版本都是在同一系统上以相同的发布配置从源码构建的,然后进行了各种不同的Python基准测试,以了解Python3.11与之前的Python版本之间的差异情况。测试环境如下:
测试结果如下:
首先是PyBenchPython基准测试。可以看到Python3.8到3.10的性能表现大致相同,但转到Python3.11Beta后,显示出了显著的加速:Python3.11Beta完成这组脚本测试的时间大约是之前版本的84%。
PyPerformancePython基准测试结果表明,Python3.11Beta的speed-ups看起来非常不错。
测试人员称,Python3.11中所谈及的性能提升看起来确实所言不虚且十分诱人。虽然Python3.8到Python3.10的性能相差不大,没有任何广泛的性能改进;但对于这个参考实现来说,Python3.11的speed-ups是巨大的,与PHP方面从PHP5到PHP7的优化水平相近。
接下来在临近Python3.11正式发布的时候,测试人员还会发布进一步的基准测试报告。
总的来说,Python3.11Beta比目前的Python3.10.4稳定版快41%,比Python3.8系列快45%。更多数据可以查看OpenBenchmarking.org页面。
这里分享一下Python3.11的5个很酷的新特性。
1、比上一个版本快60%
Python3.10:
Python3.11:
2、改进的错误提示
之前的错误提示是这样:
Python3.11是这样:
3、类型提示可以使用Self
之前的类型提示:
Python3.11的类型提示:
4、抛出和处理多个异常
Python3.11将包括一种名为ExceptionGroup的新内置异常类型。这种异常类型高级之处在于它可以同抛出多个不同的异常。ExceptionGroup需要两个参数,一个字符串,然后是我们想要引发和处理的一系列错误。一旦抛出错误,可以使用新的except*来处理错误:
5、TypeDict必填字段和非必填字段
TypedDict类可以让我们创建具有特定键和值的字典。然而,如果我们想在TypedDict字典让某些键成为非必填字段,并不容易。
上面的字典将要求这个人驾驶的姓名、年龄和汽车。然而,我们希望使汽车信息成为非必填的,因为不是每个人都有车。在Python3.10或更早版本中实现这一点,我们必须创建另一个子类,以实现可选键。这是在之前的Python版本中做到这一点的唯一方法,代码如下:
Python3.11引入了必填和非必填类型来解决此类问题,可以说是非常方便: