社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

错误调试精确到行、match-case模式匹配……Python 3.10正式版真的很友好

机器之心 • 3 年前 • 410 次点击  
机器之心报道
编辑:陈萍、杜伟
几天前,Python 3.10 正式版终于发布了。这次,想必每个程序员都会爱上它。


Python 是当今最流行的编程语言之一,已被广泛用于各种领域和应用,从学习计算机科学的基础知识到执行复杂而直接的科学计算任务,再到构建游戏,它的影子无处不在。Python 甚至应用于数据科学和量子计算等更高级的领域。

2020 年 11 月,Python 3.10 第二个 alpha 版本发布,在类型注释扩展、zip、位计数、字典映射有了新的改进。今年 4 月,Python 3.10 beta 版发布,最大的亮点就是引入了 switch-case 语句。之后,Python 又陆续发布了几个 beta 和 rc(Release Candidate)版本。

10 月 4 日,Python 官方终于发布了 Python 3.10 正式版。新版本中,Python 添加了一些独特且有价值的特性,同时删除了一些旧特性。有人总结出了 3.10 版本的三大重要特性,分别是:

  • 更好的错误跟踪;

  • match-case 结构模式匹配;

  • 新型 Union 运算符。



法国学者 Thibault Clerice 表示,「随着 Python 3.10 的发布,每个程序员都会爱上新的『结构模式匹配』功能。」


对于 Python 3.10 的新特性,威斯康星大学麦迪逊分校统计学助理教授、畅销书籍《Python Machine Learning》的作者 Sebastian Raschka 表示,「新特性中最令人兴奋的是改进的错误信息提示,像缺少逗号或拼写错误等小的错误,现在很容易被发现。」


此外,有网友表示,Python 3.10 已经提供了适配 Linux 和 macOS 系统的 psycopg2 二进制包,但 Windows 系统尚未适配好。


庆应大学量子计算博士生 Sara A. Metwalli 更是撰文对 Python 3.10 的全新特性进行了全面的整理,总结出了以下六大新特性和附件组件。

Python 3.10 最新特性


特性 1:更好的错误跟踪

作为一位每天使用 Python 编写代码的码农,肯定没少踩过语法错误的坑。虽然成熟的程序员可以熟练地掌握 Python 技巧,语法上的错误也能很好地修复,但有时我们希望得到更准确的错误消息,以帮助更好地定位错误,节省调试时间。

Python3.10 新增两个特性,可以更好地处理错误,即更好的错误消息和用于调试的精确行号。以下列代码为例,代码中包含字典和函数,然而这段代码显示没有关闭字典。

some_dict = {1: "jack", 2: "john", 3: "james" ,a_results = a_useful_function()

在之前的 Python 版本中,这个错误信息看起来像这样:


但是,随着 Python 3.10 的到来,新的错误消息和行编号的改进,能给码农带来更好的错误消息,比如错误的确切类型及其确切的行号都能跟踪。


Python 3.10 关于错误跟踪新特性将有助于加快调试速度,并减少初学者挫败感。

特性 2:引入结构模式匹配

如果你已经使用过 C++ 等其他编程语言,或许你会期待 Python 有 switch 语句,这样就不必通过长的 if、 elif、 elif…. else 语句来完成任务。Python 3.10 的一个新特性是增加了结构模式匹配,或者换句话说,增加了 match case 语句,它的语法如下:

match subject:    case <patt1>:        <act1>    case <patt2>:        <act2>    case <patt3>:        <act3>    case _:        <action_default>

特性 3:新型 Union 运算符

尽管 Python 是一种动态类型的编程语言,但有一些方法可以使它的某些部分成为静态类型。例如,如果你正在编写一个函数,并且属性(attributes)的类型对于函数内部的转换非常重要。在以前的版本中,可以指定属性的类型,例如:

def func(num: int) -> int: return num + 5

但问题来了,如果你想接受两种类型,则需要使用 Union 关键字:

def func(num: Union[int, float]) -> Union[int, float]: return num + 5

在 Python 3.10 中,你可以在两种类型中进行选择,使用 | 运算符而不是 Union 来进行更直接的类型决策:

def func(num: int | float) -> int | float: return num + 5

特性 4:Stricter Zipping

Python 中一个有趣的函数是 zip() 函数,这是 Python 中的内置函数,允许组合和迭代来自多个序列的元素。在以前的版本中,你可以使用具有不同长度序列的 zip,但是现在引入了一个新的参数 strict,用来检查传递给 zip 函数的所有可迭代对象是否具有相同的长度。

特性 5:自动文本编码

有时编码会遇到这种情况,代码在一台机器上可以运行,但是在另一台机器上会出错。导致这种情况的原因很多,有些是文本编码造成的。在 Python 的早期版本中,如果没有显式声明编码类型,首选的本地编码可能会导致代码在其他计算机上出现错误。在新版本的 Python3.10 中,如果用户打开没有特定编码类型的文本文件时,可以激活一个警告来通知用户。

特性 6:异步迭代

异步编程是一种功能强大的高级编程范式,它自 Python 3.5 版以来一直是 Python 的一部分。在 Python 3.10 中,有两个新的异步内置函数 aiter() 和 anext() 使代码更具可读性。

对于很多程序员来说,Python 可能是他们编程的首选语言。Python 在众多编程语言排行榜中也多次位居榜首,如 IEEE 2021 编程语言排名,Python 一骑绝尘,在总榜单以及其他几个分榜单中依然牢牢占据第一名的位置。此次 Python 3.10 发布,必将为 Python 这门编程语言带来更好的编程体验。

参考链接:
https://towardsdatascience.com/6-new-awesome-features-in-python-3-10-a0598e87689f

2021 NeurIPS MeetUp China


受疫情影响,NeurIPS 2021依然选择了线上的形式举办。虽然这可以为大家节省一笔注册、机票、住宿开支,但不能线下参与这场一年一度的学术会议、与学术大咖近距离交流讨论还是有些遗憾。


今年,我们将在NeurIPS官方支持下,再次于 12 月份在北京举办线下NeurIPS MeetUp China,促进国内人工智能学术交流。


2021 NeurIPS MeetUp China将设置 Keynote、圆桌论坛、论文分享和 Poster 等环节,邀请顶级专家、论文作者与现场参会观众共同交流。


欢迎 AI 社区从业者们积极报名参与,同时我们也欢迎 NeurIPS 2021 论文作者们作为嘉宾参与论文分享与 Poster 展示。感兴趣的小伙伴点击「阅读原文」即可报名。


© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:content@jiqizhixin.com

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/121232
 
410 次点击