软件介绍:此软件“仅限学习交流,不能用于商业用途”如用于商业用途,请到官方购买正版软件,追究法律责任与本站无关!

Python3.8相比,3.9的新亮点:

新的语法特性

PEP 584,union operators 已添加至 dict;

PEP 585,标准集合中的类型提示泛型;

PEP 614,放宽对装饰器的语法限制。


新的内置特性

PEP 616,用于删除前缀和后缀的字符串方法。


标准库的新特性

PEP 593,灵活的函数和变量注释;

添加了 os.pidfd_open(),允许进行进程管理,而不产生竞争和信号。

改进 Interpreter

PEP 573,从 C 扩展类型的方法快速访问模块状态;

PEP 617,CPython 现在使用了一个基于 PEG 的新解析器;

使用 PEP 590 vectorcall 加快了许多 Python 内置函数(范围、元组、集合、frozenset、列表、字典)的速度;

垃圾回收不会阻止复活的对象;

许多 Python 模块(_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, math, operator, resource, time, _weakref)都使用 PEP 489 定义的多阶段初始化;

许多标准库模块(audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib)都使用 PEP 384 定义的稳定 ABI。

新的库模块

PEP 615,即 IANA 时区数据库现在位于 zoneinfo 模块的标准库中;

新的 graphlib 模块中提供了图的拓扑排序的实现。

发布周期变更

PEP 602,CPython 采用年度发布周期。

Python-3.9的新特点:

1.字典合并与更新运算符

合并 (|) 和 更新 (|=) 运算符已经添加到字典里了,这些补充了现有的 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'}


2.字符串的去除前缀/后缀的方法

增加了 str.removeprefix(prefix) 和 str.removesuffix(suffix) 用于方便地从字符串移除不需要的前缀或后缀。也增加了 bytes, bytearray 以及 collections.UserString 的对应方法。请参阅 PEP 616 了解详情。(由 Dennis Sweeney 在 bpo-39939 中贡献。)

3.类型的标注

在类型标注中现在你可以使用内置多项集类型例如 list 和 dict 作为通用类型而不必从 typing 导入对应的大写形式类型名 (例如 List 和 Dict)。标准库中的其他一些类型现在同样也是通用的,例如 queue.Queue。

示例:

def greet_all(names: list[str])->None:
for name in names:
print("Hello", name)


4.New Parser

Python 3.9 使用于基于 PEG 的新解析器替代 LL(1)。新解析器的性能与旧解析器大致相当,但 PEG 在设计新语言特性时的形式化比 LL(1) 更灵活。我们将在 Python 3.10 及之后版本中开始使用这种灵活性。

ast 模块会使用新解析器并会生成与旧解析器一致的 AST。

在 Python 3.10 中,旧解析器将被移除,依赖于它的所有功能也将被移除(主要是 parser 模块,它早已被弃用)。只有 在 Python 3.9 中,你可以使用命令行开关 (-X oldparser) 或环境变量 (PYTHONOLDPARSER=1) 切换回 LL(1) 解析。

加载中~