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.Dict
和dict
没有太大区别。
只是typing.Dict
实际上是一个通用类型,所以它允许你在括号内指定子类型。
喜欢:
from typing import Dict
def func_1(arg_one: Dict[str, int]) -> Dict:
pass
但是 typing.Dict
仅当您的 Python 版本低于 3.9 时才需要。否则你可以对常规 dict
s.
做同样的事情
示例 Python >= 3.9:
def func_1(arg_one: dict[str, int]) -> dict:
pass
'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.Dict
和dict
没有太大区别。
只是typing.Dict
实际上是一个通用类型,所以它允许你在括号内指定子类型。
喜欢:
from typing import Dict
def func_1(arg_one: Dict[str, int]) -> Dict:
pass
但是 typing.Dict
仅当您的 Python 版本低于 3.9 时才需要。否则你可以对常规 dict
s.
示例 Python >= 3.9:
def func_1(arg_one: dict[str, int]) -> dict:
pass