如何在我的类型提示中指定函数类型?

29 浏览
0 Comments

如何在我的类型提示中指定函数类型?

我怎样指定变量的类型提示为函数类型?没有typing.Function,并且我在相关的PEP PEP 483 中找不到任何东西。

admin 更改状态以发布 2023年5月20日
0
0 Comments

另一个有趣的点值得注意的是,你可以使用内置的函数type()来获取内置函数的类型并使用它。\n所以你可以有

def f(my_function: type(abs)) -> int:
    return my_function(100)

或类似的形式。

0
0 Comments

@jonrsharpe在注释中提到,可以使用typing.Callable来实现:

from typing import Callable
def my_function(func: Callable):

注意:Callable本身等同于Callable[..., Any]
这种Callable需要任意数量和类型的参数(...), 并返回任何类型的值(Any)。如果这太过宽松,还可以指定输入参数列表和返回类型的类型。

例如,给定:

def sum(a: int, b: int) -> int: return a+b

相应的注释是:

Callable[[int, int], int]

即,在外部订阅时,将参数作为第一个元素,返回类型作为第二个元素子订阅。一般而言:

Callable[[ParamType1, ParamType2, .., ParamTypeN], ReturnType]

0