正如@jonrsharpe在评论中指出的,可以使用以下方法完成
typing.Callable:
from typing import AnyStr, Callabledef my_function(name: AnyStr, func: Callable) -> None:
问题是,
Callable将其本身翻译为
Callable[..., Any]:
一个Callable接受 任意数量的/类型的
参数,并返回任何类型的值。在大多数情况下,这不是您想要的,因为您几乎可以允许传递任何函数。您也希望对函数参数和返回类型进行提示。
这就是为什么许多
typesin
typing重载以支持表示这些额外类型的子脚本的原因。因此,例如,如果您有一个函数
sum接受两个
ints并返回一个
int:
def sum(a: int, b: int) -> int: return a+b
您的注释为:
Callable[[int, int], int]
也就是说,参数在外部订阅中带有下标,返回类型作为外部订阅中的第二个元素。一般来说:
Callable[[ParamType1, ParamType2, .., ParamTypeN], ReturnType]



