📜  Python 3.9 有什么新功能?

📅  最后修改于: 2022-05-13 01:54:32.888000             🧑  作者: Mango

Python 3.9 有什么新功能?

新版本的Python即将到来!很快,我们将在Python项目中使用它。截至 20/07/2020, Python 3.9 处于 beta 版本(3.9.0b4),很快就会发布Python 3.9 的完整版本。

介绍就够了。让我们开始了解新功能。

1. 字典合并和更新运算符: Python 3.9 在dict类中引入了merge(|)update(|=)运算符。如果您有两个字典 a 和 b,您现在可以使用这些运算符来合并和更新它们。

a = {1: "Sam", 2: "Alex"}
b = {3: "Daniel", 4: "Tom", 5: "Jimmy"}

您可以使用|合并这两个字典。

c = a|b
print(c)

输出 :

{1: "Sam", 2: "Alex", 3: "Daniel", 4: "Tom", 5: "Jimmy"}

如果两个字典都有一个共同的键,那么输出将显示第二个键值对。

a = {1: "Sam", 2: "Alex", 3: "James"}
b = {3: "Daniel", 4: "Tom", 5: "Jimmy"}
  
c = a|b
print(c)

输出 :

{1: "Sam", 2: "Alex", 3: "Daniel", 4: "Tom", 5: "Jimmy"}

要更新字典,您可以使用以下运算符:

a = {1: "Sam", 2: "Alex"}
b = {2: "Daniel"}
a |= b
print(a)

输出 :

{1: "Sam", 2: "Daniel"}

2. removeprefix()removesuffix()字符串方法:在Python 的str 类中,新的更新引入了新的removeprefix()removesuffix()方法。

您可以使用removeprefix()方法从任何字符串中删除前缀:

print('HelloWorld'.removeprefix('Hello'))

输出 :

'World'

如果字符串不以输入前缀开头,则将返回原始字符串的副本。

print('BaseTestCase'.removeprefix('Test'))

输出 :

'BaseTestCase'

如果字符串以输入后缀结尾,则输出将类似于字符串[:-len(suffix)]

print('MiscTests'.removesuffix('Tests'))

输出 :

'Misc'

如果输入后缀为空或字符串不以它结尾,则输出将是原始字符串的副本。

print('BadTestCase'.removesuffix('Tmp'))

输出 :

'BadTestCase'

3. 新的解析器: Python 3.9 使用了一个新的解析器,它是一个基于 PEG 的解析器。以前, Python使用LL(1) 。在使用语言构建新功能时,PEG 比 LL(1) 更灵活。官方文档说这种灵活性将在Python 3.10 及更高版本中看到。

4. 类型提示: Python动态地为变量指定数据类型。对于数据类型的静态分配,使用类型提示。这是在Python 3.5 中引入的。您现在可以使用内置集合类型( listdict )作为泛型类型。之前,您必须从输入中导入大写类型( ListDict )。

def greet_all(names: list[str]) -> None:
    for name in names:
        print("Hello", name)

现在不需要从typing.List调用 List 。