当前位置: 首页 > 科技观察

新方向,新功能:Python3.9完整版发布

时间:2023-03-20 21:19:43 科技观察

显然,Python3.9标志着这门著名编程语言从老路向新路演进的转折点。本文将带你探索它的新特性,了解Python未来的发展方向。Python的新方向此更新有两个主要变化,虽然直观上未受影响,但开始引起人们的注意:Python作为一种语言的发展将略有不同。简而言之,可以概括为:Python的限制版本的解析器更小,迭代更频繁1.LL(1)和PEG大约30年前,GuidovanRosen编写了pgen,这是最早编写的代码之一,它至今仍被用作Python的解析器。Pgen是基于LL(1)的语法变体编写的,这意味着解析器只需要lookaheadtokens就可以全方位读取代码。这也基本说明了Python的发展是有限的,因为:Lookaheadtokens限制了语法规则的表达能力。由于Python当前包含非LL(1)语法,因此解析器绕行很复杂并使过程复杂化。即使有这些解决方案,情况也是有限的。规则可以改变,但不能违反。使用LL(1)-specificleft-recursivegrammars可能会使解析树解析死循环,导致堆栈溢出。基于LL(1)的解析器的这些属性限制了Python的可能性,而Python3.9打破了这些限制,这要归功于PEP617中概述的ShinyNovaPEG解析器。我们不会很快感受到这种感觉。在Python3.10出来之前,新的解析器不会改变;但在此之后,Python将突破LL(1)的局限,大显身手。2、开发周期Python发布计划将从18个月缩减至12个月。在3.9发布之前,Python原计划每18个月发布一次;现在,它有12个月的发布时间表[PEP602]。过去,新版本每18个月才出现一次,但现在每年都会更改。这也意味着Python:不再一次推出大量新功能。更改更加渐进,但由于新功能的发布,修复将更快完成。发布日期更加规律,每年10月都会推出新的Python。因此,从本质上讲,本文关注的是12个月周期内较小的增量变化,而不是每18个月发生的较大变化。与此同时,预计发展速度将保持不变。二、新特性1、类型提示早在2008年,Python3就引入了函数注解——类型提示的前身。它不是特别强大,但它是一个重要的开始。Python类型提示的实时状态是多次注释和类型变化的累积添加和修改。此后添加了其他功能。今天,3.9版结合了Python类型提示的最新发展的新语法功能。我们现在可以轻松地指定变量的预期数据类型。如果你写了一些没有意义的东西(比如将一个字符串传递给一个整数),编辑器会警告说发生了错误。虽然不指出错误,但在处理复杂的代码库时它可以提供巨大的帮助。在Python中,用“+”连接两个字符串是绝对有效的。因此,“add_int”函数接收两个字符串而不会引发任何错误。没有类型提示(左);带有类型提示的Python3.9(右)。使用新的类型提示功能,只需在函数定义的参数中添加:int,编辑器将立即识别错误。指定预期的输入和输出数据类型。您还可以使用->type语法来确定函数的值输出类型。可以组合不同的类型来创建更复杂的注释。不要将自己局限于简单的预定义类型!2.字符串方法虽然不如其他变体那么酷,但使用极为频繁。有两个新的删除字符串前缀和后缀的方法:"foobar".removeprefix("fo")[Out]:'obar'"foobar".removesuffix("ar")[Out]:'foob'3.Mergedictionaries有两个新的运算符来合并字典。首先是合并运算符|:a={1:'a',2:'b',3:'c'}b={4:'d',5:'e'}c=a|bprint(c)[Out]:{1:'a',2:'b',3:'c',4:'d',5:'e'}然后更新运算符就地合并:a={1:'a',2:'b',3:'c'}b={4:'d',5:'e'}a|=bprint(a)[输出]:{1:'a',2:'b',3:'c',4:'d',5:'e'}作为一种编程语言,Python的未来是不可限量的。见证语言将如何随着新的发布计划和解析器而发展。会很有趣!