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 相关文章推荐
在Django的模型中添加自定义方法的示例
Jul 21 Python
Python基于pygame实现图片代替鼠标移动效果
Nov 11 Python
python编程开发之日期操作实例分析
Nov 13 Python
Python自动化测试ConfigParser模块读写配置文件
Aug 15 Python
Python之文字转图片方法
May 10 Python
基于python 爬虫爬到含空格的url的处理方法
May 11 Python
python 爬虫 批量获取代理ip的实例代码
May 22 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
Django:使用filter的pk进行多值查询操作
Jul 15 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
Dec 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数据记录代码
2008/06/07 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
Thinkphp中数据按分类嵌套循环实现方法
2014/10/30 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
用js来解决ajax读取页面乱码
2010/11/28 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2014/09/04 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
简单明了区分escape、encodeURI和encodeURIComponent
2018/05/26 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
python利用urllib实现爬取京东网站商品图片的爬虫实例
2017/08/24 Python
Flask框架Flask-Principal基本用法实例分析
2018/07/23 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
初中三年毕业生的自我评价分享
2014/02/14 职场文书
高中生操行评语大全
2014/04/25 职场文书
高一军训感想
2015/08/07 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
Python实现生成bmp图像的方法
2021/06/13 Python