Python 何时以及何时不使用TypeVars?
当使用Python 何时以及何时不使用TypeVars?,python,type-hinting,typing,Python,Type Hinting,Typing,当使用键入模块编写类型提示时,我不确定何时何地应该使用TypeVar实例 例如,两者的实际“区别”是什么 及 在这样的提示中使用 def foo(bar: str_or_int): pass 这就是typevars的使用方式。这意味着bar可以是str或int,foo将返回与bar相同类型的值。使用联合体将无法实现这一点: str_or_int = Union[str, int] def foo(bar: str_or_int) -> str_or_int: pass
键入
模块编写类型提示时,我不确定何时何地应该使用TypeVar
实例
例如,两者的实际“区别”是什么
及
在这样的提示中使用
def foo(bar: str_or_int):
pass
这就是typevars的使用方式。这意味着bar
可以是str
或int
,foo
将返回与bar
相同类型的值。使用联合体将无法实现这一点:
str_or_int = Union[str, int]
def foo(bar: str_or_int) -> str_or_int:
pass
这只是意味着bar
可以是str
或int
,而foo
将返回str
或int
,在bar
的类型和返回值之间没有联系。谢谢!在这种差异无关紧要的情况下(例如我的OP中的foo
),首选的类是什么?使用TypeVar
,您总是在建立连接。它是类型系统中的变量名。不要使用它,除非这是你想要的,否则你可能会看到意想不到的副作用。
def foo(bar: str_or_int):
pass
T = TypeVar('T', str, int)
def foo(bar: T) -> T:
pass
str_or_int = Union[str, int]
def foo(bar: str_or_int) -> str_or_int:
pass