3

假设我有一些通用功能:

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 具有多种类型时,这是否适用?

4

1 回答 1

2

可以认为区别在于:

foo(*args: T)意味着函数可以接受任意数量的参数,并且参数可以是任何类型,但必须都是相同的类型。

foo(*args: Any)意味着该函数可以采用任意数量的任意类型参数。

但实际上并非如此:https ://github.com/python/mypy/issues/6559#issuecomment-473864640

实际上,这两种定义没有区别

于 2020-08-20T15:12:18.610 回答