Python 3.9已经发布,本文不会详尽列出每个更改,而是为我们开发人员列出最有趣且值得注意的事情。所以,让我们开始吧!
安装测试版
为了能够实际尝试Python 3.9的alpha / beta版本中包含的任何内容,我们首先需要安装它。理想情况下,是与我们现有的Python 3.8(或其他稳定版本)安装一起使用,以免干扰默认的解释器。
我们这里安装a5:
运行此程序后,应该是这样的页面:
新Dict运算符
最值得注意的新功能可能是新的字典合并运算符“|” 或 “|=” 。到目前为止,您必须从以下3个选项之一中进行选择来合并字典:
上面的第一种方法使用dict(iterable,** kwargs)函数初始化字典-第一个参数是普通字典,第二个是键/值对列表。
第二种方法使用update来更新字典。我们需要将第一个字典复制到一个变量中,以避免修改原始字典。
第三种方法在我看来,最干净的解决方案是使用字典解包并将两个变量(d1和d2)都解包为结果d。
即使以上选项完全有效,我们现在也可以使用“|” 来提供新的解决方案:
上面的第一个示例与前面显示的第三种非常相似(d = {**** d1,** d2})。另一方面,第二个示例可用于就地合并,其中原始变量(d1)用第二个操作数(d2)中的值更新。
拓扑排序
下一个有趣的特性是functools模块的一部分。您可以在TopologicalSorter类中找到它。这个类允许我们使用拓扑排序对图进行排序。拓扑排序是指通过有向边uv(从u到v)连接的两个节点u和v, u在v之前。
在引入这个特性之前,你必须自己实现它,例如Khan的算法或深度优先搜索,这不是完全简单的算法。因此,假如需要为调度排序依赖的作业,您只需执行以下操作:
在上面的例子中,我们首先使用字典创建图,其中键是输出节点,值是它们邻居的集合。在此之后,我们使用图创建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,你现在可以这样做:
不过,在使用IPv6范围时,有一件事你应该小心。使用基本Python操作符进行比较时,具有不同作用域的两个地址是不相等的。
新的math函数
在math模块中,增加或改进了一堆复杂的函数。从对现有功能的改进开始:
以前计算最大公约数的gcd函数只能应用于两个数,这迫使程序员做类似的计算。从Python 3.9开始,我们可以将其应用于任意数量的值。
math模块第一个新增的是math.clm。模块功能:
math.clm计算其参数的最小公倍数。与GCD一样,它允许可变数量的参数。
剩下的两个新功能非常相关, math.nextafter 和 math.ulp:
nextafter(x, y)函数非常简单——考虑到浮点数精度,它是x向y的下一个浮点数。
ulp看起来可能有点奇怪……ULP代表“最后一个位置的单位”,它被用作数值计算中精度的度量。最简短的解释是用一个例子:
假设我们没有64位计算机。相反,我们只有3位数字。用这三个数字我们可以表示像3.14这样的数字,但不能表示3.141。对于3.14,我们可以表示的最接近的较大数字是3.15,这两个数字相差1 ULP(最后一位的单位),即0.1。返回值与这个示例相当,但与您的计算机的实际精度相同。
新字符串函数
math模块并不是唯一一个有新功能的模块。两个新的方便的字符串函数也被添加:
这两个函数执行的是使用字符串[len(prefix):]作为前缀,使用字符串[:-len(suffix)]作为后缀。这些都是非常简单的操作,因此也是非常简单的函数,但是考虑到你可能会经常执行这些操作,有一个内置的函数来做这些事情是很好的。
HTTP CODE
最后但同样重要的是,实际上……是添加到HTTP . httpstatus的HTTP状态代码。即是:
结论:也许并不是所有这些变化都与您的日常编程有关,但是我认为,至少应该了解前两项添加 ( “|”操作符和TopologicalSorter),因为它们在某些时候可能会派上用场。
了解新钛云服
当IPFS遇见云服务|新钛云服与冰河分布式实验室达成战略协议
新钛云服正式获批工信部ISP/IDC(含互联网资源协作)牌照
新钛云服,打造最专业的Cloud MSP+,做企业业务和云之间的桥梁
新钛云服出品的部分精品技术干货
刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!
OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等