2021年的Python 时间轴和即将推出的功能详解


Posted in Python onJuly 27, 2020

我们目前生活在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爱好者来说,显然,有趣的时代即将到来。 浏览三个版本(3.8、3.9和3.10)的发布时间表,敦促我在即将到来的有趣的Python开发时间表中编制关键日期。

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

2021年的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() 
4 
# Negative integer 
>>> num = -108 
>>> bin(num) 
'-0b1101100' 
>>> num.bit_count() 
4 
# 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 2

(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'] 
3

(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 it will stop working

这使我到本文的结尾。 随着Python 3.10宣布更多的发行要点,我将继续将它们附加到本文中。 敬请期待,让我们期待Python 3.10。 您可以在此处遵循当前和即将发布的版本的发布时间表:3.8、3.9、3.10。

到此这篇关于2021年的Python 时间轴和即将推出的功能详解的文章就介绍到这了,更多相关Python时间轴内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python json 错误xx is not JSON serializable解决办法
Mar 15 Python
python调用百度语音REST API
Aug 30 Python
[原创]Python入门教程4. 元组基本操作
Oct 31 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
Aug 09 Python
解决Django no such table: django_session的问题
Apr 07 Python
解决在keras中使用model.save()函数保存模型失败的问题
May 21 Python
PyCharm中如何直接使用Anaconda已安装的库
May 28 Python
浅谈TensorFlow之稀疏张量表示
Jun 30 Python
python如何导入依赖包
Jul 13 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 Python
Python机器学习实战之k-近邻算法的实现
Nov 27 Python
PyTorch device与cuda.device用法
Apr 03 Python
经验丰富程序员才知道的8种高级Python技巧
Jul 27 #Python
在 Windows 下搭建高效的 django 开发环境的详细教程
Jul 27 #Python
基于python实现MQTT发布订阅过程原理解析
Jul 27 #Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 #Python
Python性能分析工具py-spy原理用法解析
Jul 27 #Python
python下载的库包存放路径
Jul 27 #Python
Python基础教程之输入输出和运算符
Jul 26 #Python
You might like
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
jQuery中detach()方法用法实例
2014/12/25 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
2019/05/12 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
python检查指定文件是否存在的方法
2015/07/06 Python
Python算术运算符实例详解
2017/05/31 Python
Python爬取成语接龙类网站
2018/10/19 Python
python实现的生成word文档功能示例
2019/08/23 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
护士实习鉴定范文
2013/12/22 职场文书
致跳远、跳高运动员广播稿
2014/01/09 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
清洁员岗位职责
2015/02/15 职场文书
音乐会主持人开场白
2015/05/28 职场文书
体育教师教学随笔
2015/08/15 职场文书
《窃读记》教学反思
2016/02/18 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang