Python类型提示对于str/同一类型参数的可变数目的Callable?

2024-04-25 04:20:04 发布

您现在位置:Python中文网/ 问答频道 /正文

如何为所有这些可调用项指定一种类型:

a(str)
b(str, str)
c(str, str, str)
d(str, str, str, str

我发现我可以一般地指定Callable[..., None],但是如何详细地指定所有参数都是str而不使用难看的语法Union[Callable[[str], None], Callable[[str, str], None, __more_like_this__]。是其他方法吗?我能用打字吗?在


Tags: 方法none类型参数more语法thislike
1条回答
网友
1楼 · 发布于 2024-04-25 04:20:04

你想要的是4种不同类型的联合。在

t1 = Union[
 Callable[[str],Any],
 Callable[[str,str],Any],
 Callable[[str,str,str],Any],
 Callable[[str,str,str,str],Any],
]

与可以接受1到4个参数的函数类型相比:

^{pr2}$

像这样的函数

def foo(x: str, y:str):

不属于上述第二种类型。如果我说我需要一个t2类型的函数,你不知道我可能要传递多少个参数。我可以给你foo,但是你可以尝试传递3个参数,或者只传递1个参数,然后得到一个TypeError。在

如果你要求一个t1类型的函数,我可以给你foo。^{不保证t1中的所有值都可以多于或少于3个参数;它只包含do的值。在

相关问题 更多 >