2021年的Python 时间轴和即将推出的功能详解
作者:闻数起舞 发布时间:2023-07-14 22:32:04
我们目前生活在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开发时间表中编制关键日期。
"我妈妈总是说生活就像一盒巧克力。 你永远都不知道会得到什么。" - 阿甘
通常,在开发周期中会有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。
来源:104.116.116.112.58.47.47.100.101.118.101.108.111.112.101.114.46.53.49.99.116.111.46.99.111.109.47.97.114.116.47.50.48.50.48.48.55.47.54.50.50.48.49.53.46.104.116.109.
猜你喜欢
- 使用pip安装python库的几种方式1、使用pip在线安装1.1 安装单个package格式如下:pip install SomePack
- 一、array_map() 1、array_map() 函数将用户自定义函数作用到数组中的每
- 在任何有监督机器学习项目的模型构建阶段,我们训练模型的目的是从标记的示例中学习所有权重和偏差的最佳值。如果我们使用相同的标记示例来测试我们的
- 这次,我们再来用Ursina引擎来做一个太阳系行星模拟器吧!想要了解Ursina 3D引擎的基本使用方法的话,查看我的另一篇文章:详解Pyt
- 读写 JSON 数据问题你想读写 JSON(JavaScript Object Notation) 编码格式的数据。解决方案json模块提供
- CSV(Comma-Separated Values)即逗号分隔值,一种以逗号分隔按行存储的文本文件,所有的值都表现为字符串类型(注意:数字
- 作为六大python可视化库,基本上学会都是可以通吃任何领域的存在,本章要给大家介绍的Altair就是其中之一的可视化库,能够将数据转化为非
- 本文实例讲述了php中数字、字符与对象判断函数用法。分享给大家供大家参考。具体分析如下:在php判断数字,字符,对象,数组等包括有参见 is
- CSS网页布局应该避免滥用div元素一直是我们倡导的,以合适的HTML标签组织文档是CSS网页布局的基础。页面中div与span元素的使用是
- 本文主要研究的是使用Python+pillow绘制矩阵盖尔圆的一个实例,具体如下。盖尔圆是矩阵特征值估计时常用的方法之一,其定义为:与盖尔圆
- <SCRIPT language=vbscript event=BeforeInitialBind(i
- 虽然用python用了很久了,但是主要还是写一些模型或者算子,对于python中的高级特性用的不多,但是时常阅读大牛的代码或者框架源码,其中
- 前言最近微信小游戏跳一跳大热,自己也是中毒颇久,无奈手残最高分只拿到200分。无意间看到教你用Python来玩微信跳一跳一文,在电脑上利用a
- 一、创建生成器通过列表⽣成式,我们可以直接创建⼀个列表。但是,受到内存限制,列表容量肯定是有限的。⽽且,创建⼀个包含100万个元素的列表,不
- 迭代首先理解下什么是迭代,python中所有从左往右扫面对象的方式都是可迭代的有哪些方式是可迭代的:1.文件操作 我
- 此程序为先调用opencv自带的人脸检测模型,检测到人脸后,再调用我自己训练好的模型去识别人脸,使用时更改模型地址即可#!usr/bin/e
- 一、Python 下载Python是运行的环境,必不可少,如果你是Linux系统的话,不用安装,自带了Python。首先我们打开浏览器搜索P
- 在现实的图像操作软件中,经常碰到的不是给出放大多少倍,而是由用户在软件的界面上选择多大的区域,或者选择几个点,那么这样情况下,怎么样来计算出
- 突然想到了之前一直没留意的for循环中开goroutine的执行顺序问题,就找了段代码试了试,试了几次后发现几个有意思的地方,我暂时没有精力
- 元组(tuple)与列表类似,但是元组是不可修改的 (immutable)。也就是说,元组一旦被创建就不可被修改了。操作符 (in、+、*)