编码机

错误调试精确到行matchcase模

发布时间:2023/6/4 13:31:43   
克白灵苏孜阿甫片 https://m-mip.39.net/woman/mipso_4340655.html

机器之心报道

编辑:陈萍、杜伟

几天前,Python3.10正式版终于发布了。这次,想必每个程序员都会爱上它。

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

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

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

更好的错误跟踪;

match-case结构模式匹配;

新型Union运算符。

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

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

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

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

Python3.10最新特性

特性1:更好的错误跟踪

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

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

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

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

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

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

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

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

matchsubject:casepatt1:act1casepatt2:act2casepatt3:act3case_:action_default

特性3:新型Union运算符

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

deffunc(num:int)-int:returnnum+5

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

deffunc(num:Union[int,float])-Union[int,float]:returnnum+5

在Python3.10中,你可以在两种类型中进行选择,使用

运算符而不是Union来进行更直接的类型决策:

deffunc(num:int

float)-int

float:returnnum+5

特性4:StricterZipping

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

特性5:自动文本编码

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

特性6:异步迭代

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

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

参考链接:



转载请注明:http://www.aideyishus.com/lkjg/4761.html

------分隔线----------------------------