在正值国庆假期人山人海的2021年10月4号,Python官方正式发布了Python3.10.0。作为一只假期期间宅着不动的coding人,自然是第一时间体验了一波。相较于之前的版本,该版本有以下主要变更。
ps: 想看更好看的排版?访问:funnysaltyfish.github.io/2021/10/05/…
新的 Union Type表达
新版本简化了 Union Type 的使用 ,改为更为简洁的|
旧版:
from typing import Union
a: Union[int, str] = 1
复制代码
新的版本:
a: str | int = 1
复制代码
二者完全等价:
Union[int, str] == int | str # True
复制代码
这类变化在其他地方也相似:
# 旧版:
# def f(list: List[Union[int, str]], param: Optional[int]) -> Union[float, str]
def f(list: List[int | str], param: int | None) -> float | str:
pass
f([1, "abc"], None)
# 旧版:
# typing.List[typing.Union[str, int]]
typing.List[str | int]
list[str | int]
# 旧版:
# typing.Dict[str, typing.Union[int, float]]
typing.Dict[str, int | float]
dict[str, int | float]
复制代码
该特性也可用于 isinstance
和issubclass
# True
isinstance("FunnySaltyFish", int|str)
# True
issubclass(str, str|int)
复制代码
zip 可选严格模式
zip新增可选参数strict
, 当该选项为True时