为什么我不推荐你升级到Python 3.10


最近Python 更新频率相当高。


10月4日刚发布第一个Python 3.10 正式版,紧接着3天后,马上又发布了3.11 的第一个阿尔法测试版。


来源:Python.org


对于开发者来说,Python 3.10 也确实带来了一些有趣的变化




Python 3.10 主要带来了3个功能上的新特性。


01 结构模式匹配


结构模式匹配,也就是选择功能。


如果你有过类似于C++ 和Java 语言的开发经验,就会发现,其他语言中很好用的switch case 语法,在以往的Python 版本中是不存在的


如果需要多条件选择的功能,则是使用if elif 语法代替:


if num == 1:            # 判断num的值
    print 'boss'        
elif num == 2:
    print 'user'
elif num == 3:
    print 'worker'
else:
    print 'roadman'     # 条件均不成立时输出


虽然这样的语法并不难用,但Python 3.10 给了我们更好的选择:


num = 1
match num:
    case 1:
        role = "boss"
    case 2:
        role = "worker"
    case 3:
        role = "user"
    case _:
        role = "other"
print(role)            #输出“boss”


Python 的 match case 语法不需要自己添加烦人的break 语句,数据向下一旦匹配到合适的内容将直接跳出。这也符合Python 一贯简洁强大的代码风格。


02 更简洁的上下文管理器


在以往的Python 中,如果我们需要复制文件,则需要套娃打开两个上下文管理器。


with open("test.txt", "r") as f:  # 打开第一个文件
    with open("test_copy.txt", "w") as f_copy:  # 打开第二个文件
        content = f.read()  # 从第一个文件获取内容
        f_copy.write(content)  # 向第二个文件写入内容


这个操作在Python 3.10 中被优化了,现在我们可以在一个上下文管理器中打开多个文件。


with (
    open("test.txt", "r") as f,  # 打开第一个文件
    open("test_copy.txt", "w") as f_copy,  # 打开第二个文件
):
    content = f.read()  # 从第一个文件获取内容
    f_copy.write(content)  # 向第二个文件写入内容


03 更清晰地定义变量多输入类型


在以往的Python 中,如果你需要在定义函数变量时,启用多个类型检查,是这样写的:


def func(value: Union[int, float]) -> Union[int, float]:
    return value


新版本将这个操作简化了,不需要写那么多Union语法即可实现多类型检查功能。


def func(value: int | float) -> int | float:
    return value


个人感觉这个功能感觉使用频率不高,这里就不展开赘述了。




Python 3.10 这么棒,为什么我不推荐你升级呢?


原因很简单,兼容性和适配问题。


或者换句话说:第三方库对Python 3.10 的适配缓慢,大量常用的库在它发布十天后的今天,依然无法正常安装。


Pandas


matplotlib


cv2


其他库好歹还尝试安装之后发现装不上去,

cv2直接演都不演:No matching


这只是笔者临时想到的几个比较常用的库,都无法安装,更何况一些较为小众的第三方库。


而回退到Python 3.9 呢?


恐怕也不是一个好的选择。


来源:NGA


来源:知乎


我在逛论坛的时候发现,甚至有一些网友表示,它们使用的库和模块还没有适配Python 3.9 版本。


我不推荐你升级到Python 3.10 版本的原因,你了解了吗?


如果对Python 3.9 的特性没有需求(Python 3.8 升级到3.9 的提升远没有Python 3.9 到3.10 的大),

我更建议你保留在Python 3.8 版本养老。


毕竟鲁迅说过:“更少由开发环境带来的BUG,会对程序员身心健康带有利的影响。”


相关文章

Python版本的选择 python3版本选择

  工欲善其事,必先利其器。我们要做好一件事,准备工作非常重要。在开始学习使用Python之前,先要搭建好Python的开发环境。这时我们会面临着一些选择,Python有很多版本,我们应该选择哪个版本...

Python 考虑更改版本编号,使用 “日历” 方式

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。如果我的分享对你有帮助,请关注我,一起向上进击。一位 Python 核心维护...

PYTHON考虑更改版本编号 python更新代码

尽管普遍认为 Python 使用行业标准语义版本控制,但这导致了关于向后兼容性和生命周期预期的挫败感。译自 Python Mulls a Change in Version Numbering,作者...

python之pandas:如何查看pandas的版本号

今天这篇文章比较短,主要是告诉大家怎么查看自己使用的pandas的版本号首先导入pandasimport pandas as pd其次输入查看版本号的命令print(pd.__version__) 注...

独家 | Python 3.10发布——你应该知道的五大新特性

作者:Varun Singh翻译:欧阳锦校对:王可汗本文约1700字,建议阅读5分钟本文为大家介绍了新版本Python的新特性。图片来源:Canva——由Varun Singh编辑我们都知道Pytho...

谁是2020年最强Python库?年度Top10出炉

蕾师师 发自 凹非寺 量子位 报道 | 公众号 QbitAI2020年已经过去了,国外的一家专门提供Python服务的网站Troy Labs,盘点出了2020年发布的Python库Top10。上榜的有...