TypeVar'T'和Any之间的区别

问题描述

假设我有一些通用功能:

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

实际上两个定义之间没有区别

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...