Beta2 版本来了!7个增强提案造就更完善的Python 3.9

6月9日 , Python3.9开发周期中计划的四个beta版本中的第二版已正式发布 。 其中Python3.9接受的7个Python增强提案(PEP) , 让人们对10月将到来的最终版本充满期待 。 一起来看看采纳了这些PEP的Python有了哪些变化吧 。
Beta2 版本来了!7个增强提案造就更完善的Python 3.9
文章图片
字符串操作
在3月底 , DennisSweeney在python-dev邮件列表上请求核心开发者支持PEP616(“字符串删除前缀和后缀的方法”) 。 他指出了自2019年3月以来关于该话题的python-ideas讨论 。 埃里克·史密斯(EricV.Smith)同意支持该PEP , 这促使Sweeney发布并启动了讨论 。
在最初版本中 , 他使用cutprefix()和cutsuffix()作为要添加给字符串对象的方法名 。 针对命名部分 , 出现了一大堆的建议 。 基本上很少有人喜欢“cut” , 因此“strip”、“strim”和“remove”被提出来了 , 并且都获得了一些支持 。 经过一系列讨论 , 最终 , removeprefix()和removesuffix()似乎占据了上风 , 这正是Sweeney最终改成的版本 。 GuidovanRossum也支持这些名字 。
同时Sweeney决定完全删除元组参数功能 , 以便“允许对此有更强见解的人在另外的PEP中提出并捍卫一系列的语义” 。 他在3月28日发布了该PEP的最新版本 。 4月9日 , Sweeney发起了一个指导委员会issue , 请求对其PEP进行评审 。 4月20日 , Stinner代表委员会接受了该提案 。 这是一个很小的更改 , 但值得花时间确保它具有长期适用的接口(和语义) 。 我们将在Python3.9中看到removeprefix()和removesuffix() 。
新解析器
PEP617(“CPython新的PEG解析器”)由Python创始人即前仁慈的独裁者(BDFL)GuidovanRossum以及PabloGalindoSalgado和LysandrosNikolaou共同提出 。 它已经运行良好 , 并且在现有解析器的速度和内存使用方面提升了10%以内的性能 。 由于解析器是基于解析表达语法(PEG) , 因此也将简化语言规范 。 CPython现有的LL(1)解析器存在诸多缺点和一些hack , 新的解析器将会消除掉 。 这一更改为Python超越LL(1)语法铺平了道路 , 尽管现有语言并不完全是LL(1) 。 这一更改不会太快 , 因为计划是在Python3.9的命令行中提供开关 , 保持现有解析器可用 。
其他PEP内容
PEP615(“在标准库中支持IANA时区数据库”) 。 它将在标准库中添加一个zoneinfo模块 , 该模块将有助于从IANA时区数据库中(也称为“Olson数据库”)获取时区信息 , 以填充时区对象 。 在撰写本文时 , 它看起来很顺利 。
PEP593(“灵活的函数和变量注释”)添加了一种将上下文特定的(context-specific)元数据与函数和变量关联的方法 。 实际上 , typehint注解已挤出了很多年前在Python3.0中实现的PEP3107(“函数注释”)中设想的其它用例 。 PEP593使用注解的(Annotated)类型提示为这些用例创建了一种新的机制 。
PEP585(“标准集合中的类型提示泛型”)提供了另一种清除方法 。 它将允许删除在typing模块中维护的一组并行的类型别名 , 以支持泛型 。 例如 , type.List类型将不再需要支持诸如“dict[str,list[int]]”之类的注解(例如 , 一个带有字符串键和整数列表的值的字典) 。
字典“加法”的联合操作也会是Python3.9的一部分 。 该特性于2月24日合入 。 PEP602(“Python的年度发布周期”) 。 如提案所书 , 它将发布节奏从每18个月更改为每年一次 。 但是 , 开发和发布周期是重叠的 , 因此整个功能开发需要12个月的时间 。
这就意味着 , 第一个Python3.9beta版本发布时(即现在) , Python3.10的功能开发就开始了 。 请继续关注来年的下一轮PEP 。
原文链接:https://lwn.net/Articles/819853
【Beta2 版本来了!7个增强提案造就更完善的Python 3.9】文章部分素材来源:CSDN


    推荐阅读