引言
继 Python 3.7 版本之后,新版本发布带来了底层设计修改及 typing、pickle 等功能调整。对多数用户而言影响不大,本文重点介绍将对代码编写产生较大影响的新功能。
由于 Python 3.8 发布初期 Anaconda 多版本管理可能尚未支持,推荐到官网下载对应最新版本后单独安装。为避免与现有环境冲突,可将新环境更名为 Python38。下文中的 Python 如无特殊说明均为 Python 3.6,Python38 为 Python 3.8。
1. 字典逆序
Python 中的字典默认无序,Python 3.6 修订为按键创建顺序排序,但仍无法像列表那样直接排序。Python 3.8 中 reversed() 方法增加了对字典对象的支持,可以对字典进行逆序操作。
在简单迭代中,字典会按照顺序输出键。加入 reversed() 方法后,字典将按照键创建顺序的逆序进行输出。虽然只是小范围的功能提升,但在某些场景下对于字典对象的应用可能会起到关键作用。
[图:Python 3.6 不支持 reversed() 字典] [图:Python 3.8 支持 reversed() 字典]
2. 位置参数
Python 3.8 在参数传递方面引入了一个新特性:PEP 570 Positional-Only Argument——限定位置参数。
一般来说,Python 中的参数传递有三种形式:位置参数、关键字参数和可变参数。为了避免不必要的麻烦,规定在可变参数之后只允许使用关键字参数。即便如此还是给程序员们留下了很大的自由空间,比如在可变参数之前,位置参数和关键字参数的使用几乎不受限制。这样就出现了一个问题,假如一个团队中很多人进行合作开发,函数的定义形式和调用模式是很难规范和统一的。


