2024-04-25 04:20:04 发布
网友
如何为所有这些可调用项指定一种类型:
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__]。是其他方法吗?我能用打字吗?在
Callable[..., None]
Union[Callable[[str], None], Callable[[str, str], None, __more_like_this__]
你想要的是4种不同类型的联合。在
t1 = Union[ Callable[[str],Any], Callable[[str,str],Any], Callable[[str,str,str],Any], Callable[[str,str,str,str],Any], ]
与可以接受1到4个参数的函数类型相比:
像这样的函数
def foo(x: str, y:str):
不属于上述第二种类型。如果我说我需要一个t2类型的函数,你不知道我可能要传递多少个参数。我可以给你foo,但是你可以尝试传递3个参数,或者只传递1个参数,然后得到一个TypeError。在
t2
foo
TypeError
如果你要求一个t1类型的函数,我可以给你foo。^{不保证t1中的所有值都可以多于或少于3个参数;它只包含do的值。在
t1
你想要的是4种不同类型的联合。在
与可以接受1到4个参数的函数类型相比:
^{pr2}$像这样的函数
不属于上述第二种类型。如果我说我需要一个
t2
类型的函数,你不知道我可能要传递多少个参数。我可以给你foo
,但是你可以尝试传递3个参数,或者只传递1个参数,然后得到一个TypeError
。在如果你要求一个不保证
t1
类型的函数,我可以给你foo
。^{t1
中的所有值都可以多于或少于3个参数;它只包含do的值。在相关问题 更多 >
编程相关推荐