软硬件环境
- windows 10 64bit
- python 3.9.0
前言
2020年10月5日,python
官方发布了3.9.0正式版,本文就来看看,新版本到底有哪些变化
下载安装
首先来到官方下载网页,https://www.python.org/downloads/,傻瓜式安装,就不细讲了
这里需要注意一点,如果你原来的系统中已经有了python
环境,比如像我已经安装过anaconda
,这时候就不要讲python3.9
加入到系统环境变量PATH
中了,以免破坏原来的环境。
Python 3.9.0特性
新的语法特性
- 为
dict
增加合并运算符
合并 (|
) 与更新 (|=
) 运算符已被加入内置的dict
类。 它们为现有的dict.update
和{**d1, **d2}
字典合并方法提供了补充>>> x = {"key1": "value1 from x", "key2": "value2 from x"} >>> y = {"key2": "value2 from y", "key3": "value3 from y"} >>> x | y {'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'} >>> y | x {'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}
- 新增用于移除前缀和后缀的字符串方法
增加了
str.removeprefix(prefix)
和str.removesuffix(suffix)
用于方便地从字符串移除不需要的前缀或后缀。 也增加了bytes
,bytearray
以及collections.UserString
的对应方法 -
标准多项集中的类型标注泛型
在类型标注中现在你可以使用内置多项集类型例如
list
和dict
作为通用类型而不必从typing
导入对应的大写形式类型名(例如List
和Dict
)。 标准库中的其他一些类型现在同样也是通用的,例如queue.Queue
def greet_all(names: list[str]) -> None: for name in names: print("Hello", name)
- 放宽对装饰器的语法限制
新的解析器
3.9.0使用于基于PEG
的新解析器替代LL
。 新解析器的性能与旧解析器大致相当,但PEG
在设计新语言特性时的形式化比LL
更灵活。
在3.10中,旧解析器将被移除,依赖于它的所有功能也将被移除(主要是parser
模块,它早已被弃用)。只有在3.9中,你可以使用命令行开关(-X oldparser
)或环境变量(PYTHONOLDPARSER=1
) 切换回LL
解析器