假设我有一些通用功能:
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')
相当于“任何类型”,但是当变量参数具有多种类型时,这是否适用?
人们可能会认为区别在于:
foo(*args: T)
表示该函数可以接受任意数量的参数,并且参数可以是任何类型,但必须全部属于同一类型。
foo(*args: Any)
表示该函数可以采用任意数量的任何类型参数。
但实际上并非如此:https://github.com/python/mypy/issues/6559#issuecomment-473864640
实际上这两个定义没有区别。