Python社区  »  Python

关于Python3.9,你不可不知的4个新特性

Python爱好者社区 • 4 周前 • 31 次点击  

1.词典联合运算符



这是我最喜欢的功能之一,语法非常优美。


在Python3.9,如果你有两个词典,现在可以用这些运算符进行合并和更新。

合并运算符 "|":


还有update运算符|=,它会更新原始字典:


a = {1: 'a', 2: 'b', 3: 'c'}
b = {4: 'd', 5: 'e'}
a |= b
print(a)
{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}


如果我们的词典共享一个key,那么将使用第二个词典中的value:


a = {1: 'a', 2: 'b', 3: 'c', 6: 'in both'}
b = {4: 'd', 5: 'e', 6: 'but different'}
print(a | b)
{1: 'a', 2: 'b', 3: 'c', 6: 'but different', 4: 'd', 5: 'e'}


使用可迭代对象进行字典更新

|=操作符的另一个很酷的特性是能够使用可迭代对象(例如列表或生成器)使用新的键值对更新字典:

a = {'a': 'one', 'b': 'two'}
b = ((i, i**2) for i in range(3))
a |= b
print(a)
{'a': 'one', 'b': 'two', 0: 0, 1: 1, 2: 4}


当然,如果你用|这样做,则会得到TypeError,因为它只能用于dict类型之间的联合。

2.字符串方法



removeprefix() 和 removesuffix()

 str.removeprefix(substring: string) 接收一个 substring 参数,顾名思义,它将删除字符串对应的 substring 前缀,如果没有对应的前缀,返回原字符串。

 str.removesuffix(substring: string) 接收一个 substring 参数,它将删除字符串的对应 substring 后缀,如果没有对应的后缀,返回原字符串。


当然,这两个函数你也可以通过使用 string[:-len(suffix)] string[len(prefix):] 来实现。

这些是非常简单的操作,因此也是非常简单的功能,考虑到你可能经常执行这些操作,Python3.9 提供的这两个内置函数应该能让你非常爽。

3.新的数学函数



Python 3.9 的数学模块进行了不少的优化并添加了许多新功能。

比如以前gcd计算最大公因数的函数只能应用于2个数字,这就很蛋疼,我们必须使用  math.gcd(80, math.gcd(64, 152))  来处理大于2个数字的情况。

现在 gcd 允许计算任意数量的数字。

import math

# Greatest common divisor
math.gcd(80, 64, 152)
# 8


Math模块中,另一个新增的功能是:

# 最小公倍数
math.lcm(4, 8, 5)
# 40


用于计算最小公倍数:math.lcm,与gcd一样,它允许可变数量的参数。

4.新的解析器—PEG



这一个更改你可能看不见、摸不着,但它可能改变Python的未来。

以前Python使用 LL(1) 解析器,从Python 3.9 开始,将使用 PEG 解析器,官方认为,这个更改会使得他们更加方便地构建新功能。

因此,请期待Python 3.10,Python团队或许能给我们带来更多的惊喜!

我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注我们。

重磅!Python交流已成立


公众号运营至今,离不开小伙伴们的支持。
为了给小伙伴们提供一个互相交流的技术平台,特地开通了Python交流群。
群里有不少技术大神,不时会分享一些技术要点,更有一些资源收藏爱好者不时分享一些优质的学习资料。(免费,不卖课!)
需要进群的朋友,可长按扫描下方二维码。


▲长按扫码

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/120692
 
31 次点击  
分享到微博