5 python types typing type-hinting type-annotation
假设我有一些通用功能:
def foo(*args):
for arg in args:
print(arg)
Run Code Online (Sandbox Code Playgroud)
如果我想输入hint *args,根据PEP,我只需要指定类型一arg。
如果参数可以是任何类型怎么办?有什么区别:
T = typing.TypeVar('T')
def foo(*args: T):
...
Run Code Online (Sandbox Code Playgroud)
和
def foo(*args: Any):
...
Run Code Online (Sandbox Code Playgroud)
据我所知,TypeVar('T')等于“任何类型”,但是当变量参数具有多种类型时,这是否适用?
人们可能会认为区别在于:
foo(*args: T)意味着该函数可以接受任意数量的参数,并且参数可以是任何类型,但必须都是相同的类型。
foo(*args: Any)意味着该函数可以接受任意数量的任意类型的参数。
但实际上并非如此: https: //github.com/python/mypy/issues/6559#issuecomment-473864640
实际上,这两个定义之间没有区别。