我正在尝试在 Python 中使用类型注释。大多数情况都非常清楚,除了那些将另一个函数作为参数的函数。
考虑以下示例:
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
中注释 func_b( )
参数?回答
谢谢@Alex 提供答案。
typing
模块提供了 Callable
注释(参见:python docs)。对于我的示例,这给出了: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
注释也按照以下方案进行了注释:Callable[[Arg1Type, Arg2Type], ReturnType]
最佳答案
您可以将 typing
模块用于 Callable
注释。Callable
注释提供了一个参数类型列表和一个返回类型:
from typing import Callable
def func_b(func: Callable[[int], int]) -> int:
return func(3)
关于 python 3 : How annotate a function that takes another function as parameter?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53227628/