python alpha beta_Python 3.9计划发布六个alpha,五个beta预览版和两个候选版本

Python 3.9预计将于2020年10月5日星期一发布。在发布正式版本之前,开发人员计划发布六个alpha,五个beta预览版和两个候选版本。

1d6046324189efce5886423b8cc049a9.png

在撰写本文时,第一位候选人于8月11日发布。现在,我们正在焦急地等待第二个候选版本的发布,该版本可能会在9月14日发布。

因此,您可能想知道Python 3.9的新增功能。对?

有一些重大更改将决定Python程序的工作方式。最重要的是,在此最新版本中,您将获得一个基于解析表达式语法(PEG)的新解析器。同样,将合并|和更新并|=运算符添加到dict。

因此,让我们仔细看一下Python 3.9的所有即将发布的功能和改进。

基于PEG的新解析器

与较早的LL(1)解析器不同,更新的版本具有一些关键差异,从而使其更加灵活和面向未来。基本上在LL(1)中,Python开发人员使用了一些“ hacks”来避免其局限性。反过来,它影响添加新语言功能的灵活性。

PEG和基于上下文无关语法的解析器(例如LL(1))之间的主要区别在于,在PEG中,选择运算符是有序的。

假设我们写这个。rule: A | B | C

现在,对于LL(1)解析器,它将生成构造以得出必须扩展A,B或C中的哪一个的结论。另一方面,PEG将尝试检查第一个替代方案(例如A)是否成功。仅当不成功时,它将继续到下一个替代方案。简而言之,PEG将按照替代的编写顺序对其进行检查。A

支持IANA时区

在实际应用中,用户通常仅需要三种时区。

世界标准时间

系统的本地时区

IANA时区

现在,如果您已经熟悉Python的早期版本,那么您可能知道Python 3.2引入了classdatetime.timezone。基本上,其主要目的是为UTC提供支持。

实际上,本地时区仍然不可用。但是,在Python 3.0版中,开发人员更改了朴素时区的语义以支持“本地时间”操作。

在Python 3.9中,他们将添加对IANA时区数据库的支持。在大多数情况下,此数据库也称为“ tz”或Olson数据库。因此,不要与这些术语混淆。

所有IANA时区功能都包装在zoneinfo模块中。该数据库非常流行,并且广泛分布在类Unix操作系统中。但是请记住,Windows使用完全不同的方法来处理时区。

添加了联合运算符

在以前的Python版本中,合并或更新两个字典并不十分有效。这就是为什么开发人员现在引入工会运营商之类的原因,以进行合并和更新指令。||=

例如,之前使用时,它也会进行修改。因此,要解决此问题,我们必须实施类似的小“技巧”。d1.update(d2)d1e = d1.copy(); e.update(d2)

在这里,我们正在创建一个新的临时变量来保存该值。但是,这种解决方案不是很有效。这就是添加这些新的Union Operators的主要原因。

引入removeprefix()和removesuffix()

您是否曾经想过需要一些可以轻松删除给定字符串中的前缀或后缀的函数?

现在,你可能会说,目前已经有一些类似的功能,并可以做到这一点。但是,这就是混乱的开始。实际上,这些函数使用一组字符而不是子字符串。str.lstrip([chars])str.rstrip([chars])

因此,绝对需要一些单独的函数,这些函数可以从字符串的开头或结尾删除子字符串。

另一个原因是提供的内置支持,并为应用程序开发人员通常会写上自己的这一功能,以提高他们的工作效率。但是,在大多数情况下,它们在处理空字符串时会出错。因此,内置解决方案对于实际应用程序可能非常有用。removeprefix()removesuffix()

标准集合中的类型提示泛型

您是否注意到模块中重复的收集层次结构?typing

例如,您可以使用或内置。因此,在Python 3.9中,核心开发团队决定在模块中添加对泛型语法的支持。现在可以在该模块中可用的所有标准集合中使用该语法。typing.Listlisttyping

现在,此功能的主要优点是用户可以轻松注释其代码。它甚至可以帮助讲师更好地教Python。

添加了graphlib模块

在图形中,拓扑顺序在识别作业流中起着重要作用。这意味着它遵循线性顺序,以告诉哪个任务将在另一个任务之前运行。

该模块使我们能够执行图的拓扑排序或排序。它主要用于可散列节点。graphlib

Python 3.9中增强的模块

我认为,主要工作是在改进现有模块的同时进行的。您可以通过以下事实进行评估:更新了35个模块的庞大列表以优化Python编程语言。

一些最显著的变化发生内,,,,,,,,,,,和模块。gchttpimaplibipaddressmathospydocrandomsignalsockettimesys

不推荐使用的Python功能

Python版本3.9不推荐使用约16个功能。您可以从Python 3.9官方公告中获取详细信息。在这里,我将简要概述不推荐使用的最重要的内容。

如果您曾经使用过模块,那么您可能知道它可以接受任何可散列的类型作为种子值。这可能会产生意想不到的后果,因为无法保证哈希值是否是确定性的。因此,开发人员决定只接受None,int,float,str,bytes和bytearray作为种子值。random

另外,从现在开始,您必须指定参数以打开要写入的文件。modeGzipFile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值