当前位置:网站首页>Python3.9的7个特性

Python3.9的7个特性

2020-11-08 07:19:00 人工智能遇见磐创

作者|PADHMA 编译|VK 来源|Analytics Vidhya

介绍

正如著名作家韦恩•W•戴尔所说,

改变你看待事物的方式 你所看待的事物也会改变

当Python的新版本问世时,许多人担心向后兼容性问题和其他问题。但是如果你喜欢Python,你一定会对新更新中发布的特性感到兴奋。

Python的最新版本将于2020年10月5日(星期一)发布。本文为你提供了一个python3.9特性的列表,你现在可以尝试这些特性。

更新Python

让我们首先更新到python的新版本。如果不确定当前使用的版本,请使用下面的代码检查当前版本。

在cmd中,键入

要更新你的版本,请转到Python下载页面,获取安装包并开始安装。注意:请确保更新环境变量中的路径。

现在我们有了最新的版本,是时候检查一下有什么新特性了。

1.词典更新

字典是Python中最有用和最常用的数据结构之一。新版本优化了合并和更新词典的方式。

1.1合并词典

假设我们有两本字典dict1和dict2,

dict1包含汽车的名称和型号,而dict2包含发动机和重量。

现在我们想合并这两个字典,因为它们包含关于同一辆车的信息。在python3.8及更早版本中,要合并两个字典,我们可以使用

内置update方法:

或是表达式**:

这有时会带来不便和麻烦。

在Python3.9.0中,我们使用| union运算符对语法进行了改进,以合并两个dict,

这种方式非常干净、简洁、坦率。它还提高了代码的可读性。

如果两个字典有一个公共键,那么第二个字典中的值将被保留。

1.2更新字典

为了在Python3.8或更早版本中使用新的键值对更新现有字典,我们可以

使用update方法,

或者用iterable更新,

在3.9中,我们现在有了update操作符|=它以更简单的方式完成相同的工作。

在这里,|=的工作原理类似于扩充赋值运算符。

dict1 |=dict2表示dict1=dict1 | dict2

2类型提示

在正常情况下,我们不在Python中指定数据类型。但是在某些情况下,我们可能需要一个变量来表现某种类型。在这种情况下,Python的灵活性可能会令人讨厌。从Python3.5开始,我们可以指定类型,但这次更新使事情变得更加简单。

在这种情况下,传递给函数的值的类型非常重要。虽然代码中没有错误,但是传递一个字符串会将同一个字符串重复两次。

在最新版本中,通过类型提示(type hinting)我们可以将期望的类型指定为int,

3字符串方法

str对象增加了两个新特性。在探索性的数据分析过程中,这个特性有时会很有用。

从函数中删除前缀

从字符串中删除后缀

4数学函数

4.1 GCD

对现有的数学函数进行了修改。在早期版本中,计算GCD的函数只接受两个数字。但现在,它可以应用于任何数量的值。

4.2 LCM

数学模块中添加了一个新函数来计算LCM。与GCD函数一样,LCM函数也接受任意数量的值。

4.3 Nextafter

这个*math.nextafter()*函数接受x和y两个参数。python3.9的这个特性是一个函数,考虑到浮点数精度,它是x向y的下一个浮点数。

4.4 ulp

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

要详细了解ULP,请查看:https://matthew-brett.github.io/teaching/floating_error.html

5一致的包导入错误

这与其说是一个特性,不如说是一个修复。当以前的Python导入版本出现不一致时,它的早期导入版本出现了 不一致的错误。

builtins.__import__() 引发 ValueError 

importlib.__import__() 引发 ImportError

__import__()现在引发ImportError而不是ValueError,这更有意义。

6随机字节生成

random模块中引入了一个名为randbytes的新方法来生成随机字节。Python已经可以通过3个不同的函数生成随机字节

  • os.getrandom()
  • os.urandom()
  • secrets.token_bytes()

但它们不能产生伪随机模式。

这个random.random.randbytes函数可以以受控的方式生成随机字节,并且可以通过设置种子复制结果。不过,它只能在安全性不重要的情况下使用。

7支持IANA时区

在时区库zoneinfo中引入了一个新的支持IANA时区的模块。

考虑一个将印度标准时间转换为德里当前时间的示例。在3.9之前,我们会通过pip安装pytz,

对于zoneinfo模块,这是非常直接的。你可以直接导入ZoneInfo类。

结论

除此之外,我们现在还有新的高性能的基于PEG的解析器、Graphlib模块、异步和多处理改进、HTTP状态代码和一堆冗余特性被删除。点此了解更多:https://docs.python.org/3.9/whatsnew/3.9.html

原文链接:https://www.analyticsvidhya.com/blog/2020/10/7-exciting-python-3-9-feature-to-know/

欢迎关注磐创AI博客站: http://panchuang.net/

sklearn机器学习中文官方文档: http://sklearn123.com/

欢迎关注磐创博客资源汇总站: http://docs.panchuang.net/

版权声明
本文为[人工智能遇见磐创]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4253699/blog/4706961