## Python 3.9(2020/10/05) ### 新特性 1. **字典合并运算符 `|` 和 `|=`**: - 引入了字典合并运算符 `|` 和 `|=`,用于合并字典。例如: ```python dict1 = {'a': 1, 'b': 2} dict2 = {'b': 3, 'c': 4} merged_dict = dict1 | dict2 print(merged_dict) # 输出: {'a': 1, 'b': 3, 'c': 4} ``` 2. **新增用于移除前缀和后缀的字符串方法**: - 新的字符串方法 `str.removeprefix(prefix)` 和 `str.removesuffix(suffix)` ```python text = "HelloWorld" new_text = text.removeprefix("Hello") print(new_text) # 输出: 'World' ``` ### 3.9.1 中的重要变化 3. **typing.Literal行为更改**: - 用来向类型检查器说明被注解的对象具有与所提供的字面量之一相同的值 - 注意:Literal 类型不会在运行时强制类型检查,它主要用于类型提示和静态类型检查工具(如 MyPy) ```python from typing import Literal def greet(name: Literal['Alice', 'Bob']) -> None: print(f"Hello, {name}!") greet('Alice') # 可以通过 greet('Eve') # 报错,不在字面量类型范围内 ``` - 如果有某个参数不为 hashable,Literal 对象在相等性比较期间将引发 TypeError ```python from typing import Literal Literal[{0}] Literal[{0}] == Literal[{False}] Traceback (most recent call last): File "", line 1, in TypeError: unhashable type: 'set' ``` 4. **增强的 `typing` 模块**: - `typing` 模块引入了 `Annotated` 类型,允许添加额外的元数据到类型注解中。 5. **新的 `importlib.metadata` 模块**: - 替代了原来的 `importlib.resources`,用于访问包的元数据信息。 6. **装饰器 `functools.cache` 的改进**: - `functools.cache` 装饰器现在支持异步函数的缓存。 7. **多行 f-strings**: - 允许 f-strings 跨多行,增强了多行字符串的格式化功能。 8. **`math` 模块的改进**: - 引入了 `math.prod()` 函数,用于计算可迭代对象中所有元素的乘积。 9. **其它改进和优化**: - 包括语法改进、性能优化以及对标准库的修复和更新。 Python 3.9 带来了许多新特性和改进,进一步提升了语言的功能和易用性,增强了开发者的编程体验。