新方向、新功能:Python3.9 完整版面世了
全文共1925字 , 预计学习时长5分钟
文章插图
图源:unsplash
很显然 , Python3.9是标志这一著名编程语言从旧路线演化到新路径的转折点 。 本文就将带大家探索其新功能 , 了解Python的未来走向 。
文章插图
Python 的新方向此次更新有两个重大变化 , 虽然直观上不受影响 , 但要开始注意了:作为一种语言 , Python的发展将略有不同 。 简而言之 , 可总结为:
· Python对解析器的限制
· 版本更小 , 迭代更频繁
LL(1) 和 PEG
大约30年前 , 吉多·范·罗森写了pgen , 这是为 Python 编写的第一批代码之一 , 至今仍被用作Python的解析器 。 Pgen的编写基于LL(1)的语法变体 , 这标志着解析器若要全方位读取代码 , 只需先行令牌 。 这也基本上说明Python的开发是有限的 , 因为:
· 先行令牌限制了语法规则的表现力 。
· 由于当前Python已包含非LL(1)语法 , 解析器迂回方案繁杂 , 使过程复杂化 。
· 即使有这些解决方案 , 情况也很受限 。 规则可以改变但不能违反 。
· 使用LL(1)特定的左递归语法可能会使解析树分析无限循环 , 从而导致栈溢出 。
基于LL(1)的解析器的这些属性限制了Python可能实现的价值 , 而Python 3.9打破了这些限制 , 这要归功于闪亮新星PEG解析器 , PEP617有所概述 。 我们不会很快感受到这一点 。 在Python 3.10出来之前 , 新解析器不会更改;但之后 , Python将会冲破LL(1)的限制 , 大显身手 。
开发周期
文章插图
Python的发布计划将从18 个月缩减到 12 个月 。
在 3.9 版本发布之前 , Python原本的发布计划是间隔18个月一版的 , 而现在 , 它进入了为期12个月的发布时间表[PEP 602] 。 从前新版本每18个月才亮相一次 , 现在一年一换 。 这也意味着Python:
· 不再一次性上线大量新功能 。
· 变化更循序渐进 , 但由于新功能的发布 , 修复将会更快完成 。
· 发布日期更规律 , 新Python将在每年10月面世 。
所以从本质上讲 , 本文主要关注12个月周期内较小的增量变化 , 而不是每18个月发生的较大变化 。 与此同时 , 预计开发速度将保持不变 。
文章插图
新功能类型提示
早在2008年 , Python 3就引入了函数注释——类型提示的前身 。 它虽然不是特别强大 , 但是一个重要开端 。
文章插图
Python类型提示的实时状态是多次添加和修改注释和键入的变化累积 。
此后又增加了其他功能 。 如今 , 3.9版本将各功能与整洁的新语法结合起来 , 以取得Python类型提示的最新发展 。
现在 , 我们可以轻松地指定变量的预期数据类型 。 如果写了一些没有意义的东西(比如把字符串传递给整数) , 编辑器就会提醒有错误产生 。 虽然不会指出错误 , 但在使用复杂代码库时 , 它可帮了大忙 。
在Python中 , 用“+”连接两个字符串是绝对有效的 。 因此 , “add_int”函数接收两个字符串不会引发任何错误 。
文章插图
无类型提示(左);Python3.9带类型提示(右) 。
有了新的类型提示功能 , 只需在函数定义的参数中添加 :int , 编辑器就会立即识别错误 。
文章插图
指定预期的输入和输出数据类型 。
也可以使用->type 语法来确定函数的值输出类型 。
文章插图
可将不同类型结合在一起来创建更复杂的注释 。
不要局限于简单的预定义类型!
字符串方法
虽然不像其他变化那样酷 , 但此方法被使用频率极高 。 有两种用于删除字符串前缀和后缀的新方法:
"foo bar".removeprefix("fo")[Out]: 'o bar'
"foo bar".removesuffix("ar")[Out]: 'foo b'
合并字典
有两个新运算符来合并字典 。 首先是合并运算符 |:
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'}
然后更新运算符就地合并:
- 推新标准建新生态,下载超198亿次金山发力海内外
- 麒麟|荣耀新款,麒麟810+4800万超清像素,你还在犹豫什么呢?
- GB|备货充足要多少有多少,5000mAh+128GB,红米新机首销快速现货
- 空调|让格力、海尔都担忧,中国取暖“新潮物”强势来袭,空调将成闲置品?
- 采用|消息称一加9系列将推出三款新机,新增一加9E
- 人民币|天猫国际新增“服务大类”,知舟集团提醒入驻这些类目的要注意
- 程序|2020全景生态流量秋季大报告:TOP100APP超半数布局小程序,全景流量重塑行业竞争新格局
- 国产手机|国产手机新品频发,果粉们你们还能忍得住吗?
- 自动|碳博士控股子公司推出最新款自动驾驶清扫车
- 世代|Z星球——腾讯布局Z世代教育社交的新尝试