【发布时间】:2020-12-09 23:11:13
【问题描述】:
假设我有一些通用功能:
def foo(*args):
for arg in args:
print(arg)
如果我想输入提示*args,根据PEP我只需要指定类型一个arg。
如果参数可以是任何类型怎么办?有什么区别:
T = typing.TypeVar('T')
def foo(*args: T):
...
和
def foo(*args: Any):
...
据我所知,TypeVar('T') 等同于“任何类型”,但是当变量 args 具有多种类型时,这是否适用?
【问题讨论】:
-
使用
TypeVar,您可以在类型之间建立连接。只是TypeVar('T')本身只表示与Any相同,def foo(*args: T) -> T表示foo返回的类型与它得到的相同,你不能用Any表达... -
@deceze 如果返回
None,那有没有区别?如果是这样,我更喜欢使用Any,因为它对未来的读者来说是不言自明的。 -
简短的回答是,如果您只在一个地方使用该类型并且您没有
bounding 它,那么使用TypeVar并没有任何意义。
标签: python types type-hinting typing type-annotation