它有助于编写可以合法评估的注释;
list[int]
如果你真的试着运行它,它会爆炸,而
typing.List[int]
返回一个新的泛型类型,该泛型类型知道容器和内容的类型。这在以下情况下尤为重要:
type aliases
,其中在顶层定义了泛型的专用版本,然后将其重新用作注释:
Vector = List[float]
def scale(scalar: float, vector: Vector) -> Vector:
...
合法,但:
Vector = list[float]
def scale(scalar: float, vector: Vector) -> Vector:
...
在你脸上爆炸。您会注意到,非容器/泛型类型通常没有
typing
类型(例外情况如
Text
因为类型别名只会将它们用作“叶”类型,而不是根或分支类型。
更新:
截至3.9,
the standard collections can serve as type hints
,所以
打字
类型不是绝对必要的;如果愿意,您可以继续使用它们(对于必须在3.9之前的Python上运行的代码来说是必要的),但如果您可以依赖3.9+,则不必这样做。