Python 3.8从零开始学
上QQ阅读APP看书,第一时间看更新

1.3.2 Python 3.8的新特性

Python 3.8相对于Python 3.7,有如下新特性:

(1)赋值表达式。Python 3.8最明显的变化就是赋值表达式,即:=操作符,也称海象运算符。赋值表达式可以将一个值赋给一个变量,即使变量不存在也可以。它可以用在表达式中,无须作为单独的语句出现。

(2)仅通过位置指定的参数。仅通过位置指定的参数是函数定义中的一个新语法,可以让程序员强迫某个参数只能通过位置来指定。这样可以解决Python函数定义中哪个参数是位置参数、哪个参数是关键字参数的模糊性。

(3)支持f字符串调试。f字符串格式可以更方便地在同一个表达式内进行输出文本和值或变量的计算,而且效率更高。

(4)多进程共享内存。在Python 3.8中,multiprocessing模块提供了SharedMemory类,可以在不同的Python进程之间创建共享的内存区域。在旧版本的Python中,进程间共享数据只能通过写入文件或通过网络套接字发送,或采用Python的pickle模块进行序列化等方式。共享内存提供了进程间传递数据的更快的方式,从而使得Python的多处理器和多内核编程更有效率。

(5)Typing模块的改进。Python是动态类型语言,但可以通过typing模块添加类型提示,以便第三方工具验证Python代码。Python 3.8给typing添加了一些新元素,因此它能够支持更健壮的检查。

(6)新版本的pickle协议。Python的pickle模块提供了一种序列化和反序列化Python数据结构或实例的方法,可以将字典原样保存下来供以后读取。不同版本的Python支持的pickle协议不同,而最新版本的支持范围更广、更强大、更有效的序列化。

(7)可反转字典。Python 3.8中重写了字典,其使用了PyPy项目贡献了一个新实现。除了更快、更紧凑之外,现在的字典还会继承元素的顺序——元素会按照添加的顺序排列,就像列表一样。Python 3.8还允许在字典上使用reversed()。

(8)性能改进。许多内置方法和函数的速度都提高了20%~50%,因为之前许多函数都需要进行不必要的参数转换。