重磅来袭!Python3.10正式版发布了!我还在用3.6……

Python 3.10正式发布,你尝鲜了吗?

本文参考自 Python官方文档 :Python Release Python 3.10.0 | Python.org[1]

在正值国庆假期人山人海的2021年10月4号,Python官方正式发布了Python3.10.0[2]。作为一只假期期间宅着不动的coding人,自然是第一时间体验了一波。相较于之前的版本,该版本有以下主要变更。

新的 Union Type表达

新版本简化了 Union Type 的使用 ,改为更为简洁的

旧版:

新的版本:

二者完全等价:

这类变化在其他地方也相似:

该特性也可用于 和

zip 可选严格模式

zip新增可选参数, 当该选项为True时,传入zip的两个可迭代项长度必须相等,否则将抛出

旧版(及不加此参数),当二者长度不等时,以长度较小的为准

设置strict为True

带括号的上下文管理器

with可以加括号了

显式类型别名

使用 TypeAlias 显式标注类型别名,提高可读性

旧的方式:

可以看到,x很容易被搞混

新的方式:使用 TypeAlias表明这是个别名

match...case语句

对,就是其他语言的,python终于提供了支持,还是加强版的

完整语法参见:PEP 634 -- Structural Pattern Matching: Specification | Python.org[3]

举几个例子:

基本的类型匹配:

subject:这在处理命令行参数的时候特别有用

也可以匹配对象:

当然也可以匹配字典:

更复杂的还有结合Guard、匹配捕获等使用,具体可以参见:PEP 635 -- Structural Pattern Matching: Motivation and Rationale | Python.org[4]和PEP 636 -- Structural Pattern Matching: Tutorial | Python.org[5]

更友好的报错提示

现在,当你的括号、引号未闭合时,python会抛出更加清晰明了的错误

其他一些更新:

distutils 被弃用

推荐使用 setuptools

需要 OpenSSL 1.1.1 及以上版本移除 Py_UNICODE编码APIPyUnicodeObject的wstr被弃用,并将在之后移除

完。摸鱼去了。

参考资料[1]

https://www.python.org/downloads/release/python-3100/:https://link.juejin.cn?target=https%3A%2F%2Fwww.python.org%2Fdownloads%2Frelease%2Fpython-3100%2F

[2]

https://www.python.org/downloads/release/python-3100/:https://link.juejin.cn?target=https%3A%2F%2Fwww.python.org%2Fdownloads%2Frelease%2Fpython-3100%2F

[3]

https://www.python.org/dev/peps/pep-0634/#id25:https://link.juejin.cn?target=https%3A%2F%2Fwww.python.org%2Fdev%2Fpeps%2Fpep-0634%2F%23id25

[4]

https://www.python.org/dev/peps/pep-0635/#id15:https://link.juejin.cn?target=https%3A%2F%2Fwww.python.org%2Fdev%2Fpeps%2Fpep-0635%2F%23id15

[5]

https://www.python.org/dev/peps/pep-0636/:https://link.juejin.cn?target=https%3A%2F%2Fwww.python.org%2Fdev%2Fpeps%2Fpep-0636%2F

相关文章