Python 3:如何注释以另一个函数作为参数的函数?

时间:2018-11-09 14:28:50

标签: python python-3.x annotations

我正在尝试使用Python中的类型注释。除了那些将另一个函数作为参数的函数之外,大多数情况都非常清楚。

考虑以下示例:

undefined

输出仅显示from __future__ import annotations def func_a(p:int) -> int: return p*5 def func_b(func) -> int: # How annotate this? return func(3) if __name__ == "__main__": print(func_b(func_a))

如何在15中注释func参数?


答案
谢谢@Alex提供的答案。 func_b( )模块提供了typing注释(请参阅:python docs)。以我的示例为例,

Callable

如您所见,遵循该方案,from __future__ import annotations from typing import Callable def func_a(p:int) -> int: return p*5 def func_b(func: Callable[[int], int]) -> int: return func(3) if __name__ == "__main__": print(func_b(func_a)) 注释本身也被注释了:

Callable

2 个答案:

答案 0 :(得分:4)

您可以将typing模块用于Callable注释。

Callable批注提供了参数类型和返回类型的列表:

from typing import Callable

def func_b(func: Callable[[int], int]) -> int:
    return func(3)

答案 1 :(得分:0)

难道不是function吗?

>>> type(func_a)
function