随着Python版本的不断更迭,Python3.10版本的正式发布也越来越近,前不久Python官方发布了新的Python3.10.0a6的alpha内部测试版本。连龟叔都在twitter上打广告。

python哪个版本去掉了gil python各个版本_python

为了帮助大家更好更快的了解到Python3.10的一些新的特性,小编今天就给大家带来Python3.10版本的七大新特性,一起来看看吧。

01.Python3.10 alpha版本安装

对于Python3.10 alpha版本的安装,这里我们以Windows平台进行展示。大家首先进入到Python的官网来下载Python的安装包,官网的地址为:https://www.Python.org/downloads/windows/。接下来就是对于安装包的下载,如下图所示:

python哪个版本去掉了gil python各个版本_python哪个版本去掉了gil_02

上图中有两个可以下载的版本,分别是zip压缩包和exe可执行文件,对于zip压缩包,大家下载后,直接解压即可使用,而exe文件则需要大家点击运行,进行Python3.10环境的安装,安装完成后,点击Python.exe得到下图结果,表明我们已经成功安装。

python哪个版本去掉了gil python各个版本_python_03

新特性介绍

对于Python3.10版本,有许多新的特性,需要大家去了解,为了更好的让大家对Python3.10版本有更好的认识,下面的介绍中,小编会尽量的添加Python3.10版本代码与旧版本(3.9及以前版本)的代码对比。

  • 类型检查改进
  • 类型别名更改
  • 频率统计
  • 丢弃了Distutils库
  • 字典增加了mapping属性
  • 函数zip()增加了新参数
  • 模版匹配(类似c++ switch/case)

1).类型检查改进

python哪个版本去掉了gil python各个版本_开发语言_04

Python3.10版本中,联合运算符使用“|”线来代替了旧版本中的Union[]方法,使得程序更加简洁,不仅如此,Python3.10在一些内置函数中,同样可以利用“|”线的联合运算符来提升程序的性能。

python哪个版本去掉了gil python各个版本_python_05

2).类型别名的更改

python哪个版本去掉了gil python各个版本_python哪个版本去掉了gil_06

在旧版本中,可以直接通过不同类型的赋值操作来赋予类型新的名字,而在Python3.10版本中,则通过TypeAlias来规定了类型名字的替换。这样操作的优势在于能够让程序开发人员和Python编辑器更加清楚的知道newname是一个变量名还是一个类型的别名,提升程序开发的可靠性。

*3).二进制表示中的频率为1的数量统计*

python哪个版本去掉了gil python各个版本_Python入门_07

在Python3.10版本中,可以通过调用bit_count函数来统计二进制中数字**“1”**的个数,当然,在旧版本中,也可以通过很简单的代码实现这个功能。

4).准备弃用Distutils 内置库

由于Distutils库的功能已经被此setuptools和package库取代了,所以本着简洁性的原则,Distutils在不久的将来将会被完全的删除掉。

python哪个版本去掉了gil python各个版本_开发语言_08

5).字典增加mapping属性

python哪个版本去掉了gil python各个版本_python哪个版本去掉了gil_09

在Python3.10中,针对于字典的三个方法,items,keys和values都增加了一个新的“mapping”属性,通过上述的程序可以发现,对三个方法调用mapping属性后都会返回原字典数据。

6*).函数 zip() 增加 strict 参数*

python哪个版本去掉了gil python各个版本_开发语言_10

Python3.10中对于zip函数添加了strict参数,顾名思义,strict参数就是要严格的遵守参数长度的匹配原则,上述程序中,keys和values列表的长度并不一致。

旧版本的zip函数会根据长度最短的参数来创建字典。新版本的zip函数中,当设定strict参数设置为True时,则要求zip的输入参数必须要长度一致,否则就会报错。

7).模板匹配

python哪个版本去掉了gil python各个版本_Python入门_11

Python 3.10 引入了结构化的模式匹配,通过match…case关键词来完成,可以匹配字典,类以及其他更复杂的结构。match…case的模式匹配,在使用的方式上与C++中的switch有很多的相似之处。

上图的函数中,case函数通过匹配元组,如果元组第三个参数是“male”,则匹配到第一个例子,如果元组第三个参数是“female”,则匹配到第二个例子,如果前面的案例都不满足时,则输出最后的默认结果。