问题描述
假设我有一些通用功能:
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为多种类型时,这是否适用?
解决方法
人们可能会认为区别在于:
<ul></ul>
表示该函数可以接受任意数量的参数,并且参数可以是任何类型,但必须都属于同一类型。
foo(*args: T)
意味着该函数可以接受任意数量的任何类型参数。
但实际上并非如此:https://github.com/python/mypy/issues/6559#issuecomment-473864640
实际上两个定义之间没有区别。