Python 3.10更新,以及2.* 与3.*的转换

Python 3.10的正式版本在2021年10月4日正式发布,而看Python的创始人吉多范罗苏姆(Guido van Rossum) 推特,置顶了一条信息(2020 - 9 - 16),关于Python 4的快问快答,1.在Python 3.9后面发布的是3.10,目前3.10正式版本已经发布。2. 如果Python存在Version 4,那么从V3到V4的过度更像是V1到V2,而不是V2到V3。
Python 3.10更新,以及2.* 与3.*的转换_第1张图片
Python是自己常用的工具之一,一直想深入探究,不妨一起来学习一下。
这篇推文包含2个部分,第一部分为Python 3.10有哪些特性,第二部分为Python v2与v3有哪些不同。
Python 3.10更新,以及2.* 与3.*的转换_第2张图片
第一部分:Python 3.10有哪些特性
1、新的 Union Type表达
Union Type是为了方便标记函数的参数类型以及返回值类型
详细可见参考链接: Union Type介绍链接
Python 3.10更新,以及2.* 与3.*的转换_第3张图片

另外,这个用法在内置函数中也有应用,比如说BIN函数(built-in function)isinstance函数,该函数用于判断一个对象是否是一个已知的类型,下图表示判断’aaa’ 是否为一个str或者是int类型,结果都是True。
Python 3.10更新,以及2.* 与3.*的转换_第4张图片

2、zip 新增可选参数strict
zip函数我们知道,在Python中应用也颇为广泛,其生成的是可迭代对象。当二者长度不等时,以长度较小的为准,见下图:
Python 3.10更新,以及2.* 与3.*的转换_第5张图片
在新版本中,当该选项(strict)为True时,传入zip的两个可迭代项长度必须相等,否则将抛出 ValueError。PASS:感觉引入了一只 *** 。
新版应用:

# ... 
z = zip(names,numbers,strict=True) 
# ...

3、with可以加括号了
在介绍这个更新功能前,我们先回顾with的用法。
给出code:

with open("/tmp/foo.txt") as file: 
  data = file.read()

With具体的用法可参考:with 具体用法参考
更新后:
Python 3.10更新,以及2.* 与3.*的转换_第6张图片

4、match…case语句
这个语法在以前学C++遇到过(久远的记忆)
Python 3.10更新,以及2.* 与3.*的转换_第7张图片

Python 3.10更新,以及2.* 与3.*的转换_第8张图片

在matlab也有这种用法:
Python 3.10更新,以及2.* 与3.*的转换_第9张图片

Matlab中遇见多个匹配的:
Python 3.10更新,以及2.* 与3.*的转换_第10张图片

此code生成结果:
Python 3.10更新,以及2.* 与3.*的转换_第11张图片

在Fortran 中的用法(古老的语言,哭):
详细的用法可见:Fortran select 语法参考
Python 3.10更新,以及2.* 与3.*的转换_第12张图片

在python中,python终于提供了支持,还是加强版的
详细参考见:
PEP 634
PEP 635
PEP 636

Python 3.10更新,以及2.* 与3.*的转换_第13张图片
复杂的用法,可匹配对象:
Python 3.10更新,以及2.* 与3.*的转换_第14张图片

复杂的用法,可匹配字典:
Python 3.10更新,以及2.* 与3.*的转换_第15张图片

5、使用 TypeAlias表明这是个别名,提高程序的可读性
Python 3.10更新,以及2.* 与3.*的转换_第16张图片

6、更加友好的报错方式
现在,当你的括号、引号未闭合时,python会抛出更加清晰明了的错误
Python 3.10更新,以及2.* 与3.*的转换_第17张图片
Python 3.10更新,以及2.* 与3.*的转换_第18张图片

7、准备弃用Distutils 内置库
由于Distutils库的功能已经被此setuptools和package库取代了,所以本着简洁性的原则,Distutils在不久的将来将会被完全的删除掉(用得太少,不cares)
8、字典中新增mapping属性
字典中一般都包含 键–值 对,items,keys和values都增加了一个新的“mapping”属性,通过上述的程序可以发现,对三个方法调用mapping属性后都会返回原字典数据。
Python 3.10更新,以及2.* 与3.*的转换_第19张图片

9、二进制bin函数中数字为1的数统计
Python 3.10更新,以及2.* 与3.*的转换_第20张图片

10、其他修改大家知道的可以补充
未完待续 …

第二部分:Python2. 与python3.的相互调用
本身想写Python2 与Python3的差异的,Python2与3的差异是非常大的。这样写下去文章内容过长,暂时先开个小头。
Python2版本在Python2.7之后就不在support了,但是Python2我们也能经常遇见。比如ArcMap。ArcGIS用户(包括ArcMap和ArcGIS Pro)里主要使用ArcPy包来处理地理问题,里面包括了所有地理处理功能。要特别注意的是,Arcgis Pro使用python 3,而Arcmap使用版本2。之前接还触过一个小的项目涉及的代码全是Python2。
在这里插入图片描述

那遇到这种情况我们怎么去使用Python2呢?
1、可以去配置Python2的环境,激活Python2的环境去运行
比如说在Anaconda中配置Python2的环境
2、2to3是python自带的一个代码转换工具,但是使用也会受一定限制
转换前:
Python 3.10更新,以及2.* 与3.*的转换_第21张图片
转换后:
Python 3.10更新,以及2.* 与3.*的转换_第22张图片 3、其他方法

Python 3.10更新,以及2.* 与3.*的转换_第23张图片

你可能感兴趣的:(python,python)