介绍
正如著名作家韦恩•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
内容出处:,
声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/soft/13851.html