Python3.10明年发布,看看都有哪些新特性?

python

我们目前生活在Python 3.8的稳定时代,上周发布了Python的最新稳定版本3.8.4。Python 3.9已经处于其开发的beta阶段,并且2020年7月3日预发布了beta版本(3.9.0b4),第五版beta预定于明天发布。3.9的第一个稳定版本预计将在2020年10月发布。Python3.10的开发也将于2020年5月开始,并且第一个beta版本预计在2021年5月开始。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

对于Python爱好者来说,显然,有趣的时代即将到来。浏览三个版本(3.8、3.9和3.10)的发布时间表,敦促我在即将到来的有趣的Python开发时间表中编制关键日期。

"我妈妈总是说生活就像一盒巧克力。你永远都不知道会得到什么。" - 阿甘

通常,在开发周期中会有4–5个beta版本,并且在第一个beta版本之后的版本中不会引入任何新功能。对于3.8,beta-1已于2019年6月发布;对于3.9,beta-1已于2020年5月发布。尽管未来的Python 3.10刚刚启动,但官方网站已经在其一些亮点中进行了简要介绍。

这篇文章旨在简要介绍时间轴,并预览即将发布的新Python版本的主要功能,以改编Python网站上的官方示例。请注意,我们可能会在3.10版中看到更多新功能,并且随着时间的推移,我将继续更新以下列表。

突出显示Python 3.10中的功能

(1) 二进制表示中的频率为1

将引入一个新的方法bit_count(),该方法将返回整数的二进制表示形式中存在的个数。结果将独立于整数的符号。此功能的一个用例是在信息论中,其中对于两个等长的字符串,您可以找到两个字符串不同的位置的总数。这种差异称为汉明距离(参见Wiki)。在此处阅读有关Python中此功能的历史记录。

在后台,此方法仅调用strtype asstr.count("1")的count方法。以下示例对此进行了说明:

# Positive integer 

>> > num = 108 

# Let"s first get the binary representation of num 

>> > bin(num) 

"0b1101100"

>> > num.bit_count() 

# Negative integer 

>> > num = -108 

>> > bin(num) 

"-0b1101100"

>> > num.bit_count() 

# Under the hood 

>>

> bin(num).count(

"1"

(2) 压缩将是"严格的"

新的可选关键字参数strict将添加到zip函数中。如果passstrict = True,则压缩的可迭代项的长度必须相等,否则将引发ValueError。在Python 3.9之前,如果要压缩两个不等长的列表,则将得到长度等于较小列表的输出。

如以下示例所示,在Python 3.10之前,zip()函数忽略了第一个列表中不匹配的"D"。相比之下,Python 3.10将引发ValueError。鉴于压缩相同数量项目的直观性,我喜欢此功能,因为它唤醒您重新检查您的输入。在PEP 618上了解有关此问题的更多信息。

在Python 3.10之前:

>> > list(zip([ "A" ,  "B" ,  "C" ,  "D" ], [ "Apple" ,  "Ball" ,  "Cat" ]))  

[( "A" ,  "Apple" ), ( "B" ,  "Ball" ), ( "C"

"Cat"

)] 

在Python 3.10中:

>>>  list (zip([ "A" ,  "B" ,  "C" ,  "D" ], [ "Apple" ,  "Ball" ,  "Cat" ], strict=True))  

Traceback (most recent  call last ): ...ValueError: zip()  argument 1  is

longer than 

argument

(3) 字典的只读视图

字典的三个键方法keys(),values()和items()返回类似于集合的对象,这些对象分别对应于字典的键,值和项目的动态视图。您在这两个视图中所做的任何更改也将反映在原始词典中。

在Python 3.10中,从以上三种方法返回的所有视图都将具有一个称为mapping的附加属性,该属性将返回该映射的只读代理。该只读代理将包装视图引用的原始字典。以下示例对此进行了说明:

让我们定义一个字典并将其键和值存储在单独的变量中:

>> > fruits = { "Mangos" : 12,  "Figs" : 100,  "Guavas" : 3,  "Kiwis" : 70}  

>> > keys = fruits.keys()  

>> > values = fruits.values()  

>> > list(keys)  

[ "Mangos" ,  "Figs" ,  "Guavas"

"Kiwis"

现在,我们使用thedel语句从此字典中删除两个元素。如果现在打印键和值,您将看到它仅返回其余项目。现在,原始词典中的更改将反映在视图中(此处为键和值)。

>> > del fruits[ "Figs" ]  

>> > del fruits[ "Guavas" ]  

>> > print (list(keys), list(values))  

[ "Mangos"

"Kiwis"

] [12, 70] 

现在,通过映射,您将仍然能够找回原始字典的只读代理。cool! 是不是

# returns a read-only proxy of the original dictionary  

>> > values.mapping  

mappingproxy({ "Mangos" : 12,  "Figs" : 100,  "Guavas" : 3,  "Kiwis" : 70})  

>> > values.mapping[ "Guavas" ]  

(4) 消除一些向后兼容性

集合模块的抽象基类(ABC)的别名支持将从Python 3.10开始删除。因此,现在是停止忽略相应的"弃用警告"并改编代码的好时机。

高达Python 3.9.0b4(于2020年7月3日发布)

到现在为止,在DeprecationWarning中将直接从collections模块中导入任何这些ABC。

>>>  from collections  import ABC_Name 

DeprecationWarning: Using  or importing the ABCs  from "collections" instead  of from "collections.abc" is deprecated since Python 3.3, and in

3.9 

以上是 Python3.10明年发布,看看都有哪些新特性? 的全部内容, 来源链接: utcz.com/z/530649.html

回到顶部