Python 3.9已经发布,本文不会详尽列出每个更改,而是为我们开发人员列出最有趣且值得注意的事情。所以,让我们开始吧!

安装测试版

为了能够实际尝试Python 3.9的alpha / beta版本中包含的任何内容,我们首先需要安装它。理想情况下,是与我们现有的Python 3.8(或其他稳定版本)安装一起使用,以免干扰默认的解释器。 

我们这里安装a5:

一文Get #Python 3.9的新功能#

运行此程序后,应该是这样的页面:

一文Get #Python 3.9的新功能#

新Dict运算符

最值得注意的新功能可能是新的字典合并运算符“|”  “|=” 。到目前为止,您必须从以下3个选项之一中进行选择来合并字典:

一文Get #Python 3.9的新功能#

上面的第一种方法使用dict(iterable,** kwargs)函数初始化字典-第一个参数是普通字典,第二个是键/值对列表。

第二种方法使用update来更新字典。我们需要将第一个字典复制到一个变量中,以避免修改原始字典。

第三种方法在我看来,最干净的解决方案是使用字典解包并将两个变量(d1和d2)都解包为结果d。

即使以上选项完全有效,我们现在也可以使用“|” 来提供新的解决方案:

一文Get #Python 3.9的新功能#

上面的第一个示例与前面显示的第三种非常相似(d = {**** d1,** d2})。另一方面,第二个示例可用于就地合并,其中原始变量(d1)用第二个操作数(d2)中的值更新。

拓扑排序

下一个有趣的特性是functools模块的一部分。您可以在TopologicalSorter类中找到它。这个类允许我们使用拓扑排序对图进行排序。拓扑排序是指通过有向边uv(从u到v)连接的两个节点u和v, u在v之前。

在引入这个特性之前,你必须自己实现它,例如Khan的算法或深度优先搜索,这不是完全简单的算法。因此,假如需要为调度排序依赖的作业,您只需执行以下操作:

一文Get #Python 3.9的新功能#

一文Get #Python 3.9的新功能#

在上面的例子中,我们首先使用字典创建图,其中键是输出节点,值是它们邻居的集合。在此之后,我们使用图创建sorter实例,然后调用static_order函数来生成排序。请记住,这种顺序可能取决于插入的顺序,因为当两个节点在同一层次图上时,它们将按照插入的顺序返回。

除了静态排序之外,这个类还支持节点在准备处理时的并行处理,这在处理任务队列时非常有用——你可以在Python库文档中找到这样的例子。

IPv6地址范围

Python 3.9中引入的另一个变化是能够指定IPv6地址的范围。如果您不熟悉IPv6范围,它们用于指定internet的哪个部分的IP地址是有效的。作用域可以使用%符号在IP地址的末尾指定-例如:3FFE:0:0:1:20:F8FF:FE75:50DF%2 -所以这个IP地址在作用域2中,即链路-本地地址。

所以,如果你需要处理IPv6地址在Python,你现在可以这样做:

一文Get #Python 3.9的新功能#

不过,在使用IPv6范围时,有一件事你应该小心。使用基本Python操作符进行比较时,具有不同作用域的两个地址是不相等的。

新的math函数

在math模块中,增加或改进了一堆复杂的函数。从对现有功能的改进开始:

一文Get #Python 3.9的新功能#

以前计算最大公约数的gcd函数只能应用于两个数,这迫使程序员做类似的计算。从Python 3.9开始,我们可以将其应用于任意数量的值。

math模块第一个新增的是math.clm。模块功能:

一文Get #Python 3.9的新功能#

math.clm计算其参数的最小公倍数。与GCD一样,它允许可变数量的参数。

剩下的两个新功能非常相关, math.nextafter 和 math.ulp:

一文Get #Python 3.9的新功能#

nextafter(x, y)函数非常简单——考虑到浮点数精度,它是x向y的下一个浮点数。

ulp看起来可能有点奇怪……ULP代表“最后一个位置的单位”,它被用作数值计算中精度的度量。最简短的解释是用一个例子:

假设我们没有64位计算机。相反,我们只有3位数字。用这三个数字我们可以表示像3.14这样的数字,但不能表示3.141。对于3.14,我们可以表示的最接近的较大数字是3.15,这两个数字相差1 ULP(最后一位的单位),即0.1。返回值与这个示例相当,但与您的计算机的实际精度相同。

新字符串函数

math模块并不是唯一一个有新功能的模块。两个新的方便的字符串函数也被添加:

一文Get #Python 3.9的新功能#

这两个函数执行的是使用字符串[len(prefix):]作为前缀,使用字符串[:-len(suffix)]作为后缀。这些都是非常简单的操作,因此也是非常简单的函数,但是考虑到你可能会经常执行这些操作,有一个内置的函数来做这些事情是很好的。

HTTP CODE

最后但同样重要的是,实际上……是添加到HTTP . httpstatus的HTTP状态代码。即是:

一文Get #Python 3.9的新功能#

结论:也许并不是所有这些变化都与您的日常编程有关,但是我认为,至少应该了解前两项添加 ( “|”操作符和TopologicalSorter),因为它们在某些时候可能会派上用场。

了解新钛云服

当IPFS遇见云服务|新钛云服与冰河分布式实验室达成战略协议

新钛云服正式获批工信部ISP/IDC(含互联网资源协作)牌照

深耕专业,矗立鳌头,新钛云服获千万Pre-A轮融资

新钛云服,打造最专业的Cloud MSP+,做企业业务和云之间的桥梁

新钛云服一周年,完成两轮融资,服务五十多家客户

上海某仓储物流电子商务公司混合云解决方案

新钛云服出品的部分精品技术干货

低代码开发,全民开发,淘汰职业程序员!

国内主流公有云VPC使用对比及总结

万字长文:云架构设计原则|附PDF下载

刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!

Ceph OSD故障排除|万字经验总结

七个用于Docker和Kubernetes防护的安全工具

运维人的终身成长,从清单管理开始|万字长文!

OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等

什么是云原生?

IT混合云战略:是什么、为什么,如何构建?

一文Get #Python 3.9的新功能#

相关文章:

  • 2021-08-20
  • 2021-11-16
  • 2021-10-13
  • 2021-07-26
  • 2021-12-30
  • 2021-06-19
  • 2021-12-09
  • 2021-05-31
猜你喜欢
  • 2021-05-02
  • 2021-07-29
  • 2021-05-20
  • 2022-12-23
  • 2021-06-07
  • 2021-10-28
  • 2021-05-16
相关资源
相似解决方案