何时以及何时不使用 TypeVars?
When and when not to use TypeVars?
当使用 typing
模块编写类型提示时,我不确定什么时候应该使用 TypeVar
个实例。
例如
之间的实用"difference"
str_or_int = typing.TypeVar('str_or_int', str, int)
和
str_or_int = typing.Union[str, int]
在这样的提示中使用?
def foo(bar: str_or_int):
pass
T = TypeVar('T', str, int)
def foo(bar: T) -> T:
pass
这就是类型变量的使用方式。这意味着 bar
可以是 str
或 int
并且 foo
将 return 与 bar
相同类型的值。你不会用 Union
:
str_or_int = Union[str, int]
def foo(bar: str_or_int) -> str_or_int:
pass
这只是意味着 bar
可以是 str
或 int
而 foo
将 return 是 str
或 int
,bar
的类型和 return 值之间没有联系。
当使用 typing
模块编写类型提示时,我不确定什么时候应该使用 TypeVar
个实例。
例如
之间的实用"difference"str_or_int = typing.TypeVar('str_or_int', str, int)
和
str_or_int = typing.Union[str, int]
在这样的提示中使用?
def foo(bar: str_or_int):
pass
T = TypeVar('T', str, int)
def foo(bar: T) -> T:
pass
这就是类型变量的使用方式。这意味着 bar
可以是 str
或 int
并且 foo
将 return 与 bar
相同类型的值。你不会用 Union
:
str_or_int = Union[str, int]
def foo(bar: str_or_int) -> str_or_int:
pass
这只是意味着 bar
可以是 str
或 int
而 foo
将 return 是 str
或 int
,bar
的类型和 return 值之间没有联系。