Python3.10在年的10月3号发布,目前已经过去1个月了,关于它的新特性相信大家已经有所耳闻,不过我决定仍然不更新,目前我在用的版本是Python3.8,没有任何不爽。下面说一说我不更新的理由。
第一、相关的库可能还未跟进
如果你更新到了最新版本,已有的代码能否在不修改的情况下仍然可以正常运行?是首先要考虑的问题。
Python的第三方库都是基于开源志愿者的劳动,他们免费做着非常有价值的工作,而且适配新的Python版本都需要时间。此外,由于升级涉及许多不同的群体,协调和发布需要更多时间。
第二、很多新特性没使用价值
盘点一下Python3.10的那些没什么用的新特性(个人观点,可以留言来喷):
1、with可以加括号了
比如:
with(CtxManager1()asexample1,CtxManager2()asexample2,CtxManager3()asexample3,):...
这一点,我基本用不到,也不清楚什么样的情况需要这样写。要是有多个上下文,我就串着多写几个就是了,要是example1和example2有关系,我可以嵌套:
withCtxManager1()asexample1:withCtxManager2()asexample2:......
这样写不是层次更清晰吗?
2、matchcase就是花花肠子
Python3.10新增了match和case软关键字。什么是软关键字?就是虽然是关键字,但是可以作为变量名,虽然如此,你肯定也不愿意让match成为你的变量名了,因为这样也是不会报错的:
matchmatch:#后一个match是变量名称casecase:action
3.10的matchcase的语法如下:
matchsubject:casepattern_1:action_1casepattern_2:action_2casepattern_3:action_3case_:action_wildcard
它的用法可多了,有些我都快看不懂了。比如先来个简单的:
defmatch_errno(errno):matcherrno:case0:passcase1:passcase42:print("42!")case_:print("wildcard")
这里有个_表示谁也不匹配的情况,相当于一个默认值,但是_本来是用来表示一个后续不再使用的变量的,假如这样调用,虽然解释的通,总感觉怪怪的:
_=42match_errno(_)42!
再来个复杂一点的:
def