When/why 使用类型提示模块中的类型

When/why use types from typing module for type hints

'right' 类型提示的确切方法是什么? 我的 IDE(和生成的代码)可以很好地使用以下任一选项进行类型提示,但某些类型可以从输入模块导入。与内置模块(如 list 或 dict)相比,是否更喜欢使用 typing 模块的导入?

示例:

from typing import Dict
def func_1(arg_one: Dict) -> Dict:
    pass

def func_2(arg_one: dict) -> dict:
    pass

“正确”的方法是尽可能使用内置函数(例如 dict 而不是 typing.Dict)。 typing.Dict 仅当您使用 Python < 3.9 时才需要。在旧版本中,您不能将 dict[str, Any] 等通用注释与内置函数一起使用,您必须使用 Dict[str, Any]。参见 PEP 585

typing.Dictdict没有太大区别。

只是typing.Dict实际上是一个通用类型,所以它允许你在括号内指定子类型。

喜欢:

from typing import Dict
def func_1(arg_one: Dict[str, int]) -> Dict:
    pass

但是 typing.Dict 仅当您的 Python 版本低于 3.9 时才需要。否则你可以对常规 dicts.

做同样的事情

示例 Python >= 3.9:

def func_1(arg_one: dict[str, int]) -> dict:
    pass