Python中有没有办法确保我的函数的一个参数是另一个函数?

Sam*_*ira 5 python python-3.x

函数参数定义中的类型注释:我想在 python 中实现一个高阶函数,为此我想要显式参数类型。有没有办法显示“函数”类型?

def high_order_math(a: Float, b: Float, func: function):
    return func(a,b)
Run Code Online (Sandbox Code Playgroud)

这是一些发现,感谢所有分享您的知识的人

def high_order_math(a: float, b: float, func: Callable[[float, float], float]) -> float:
     return func(a, b)

high_order_math(1,2,3)
Run Code Online (Sandbox Code Playgroud)

回溯(最近一次调用最后一次):

文件“”,第 1 行,在

文件“”,第 2 行,在 high_order_math

类型错误:“int”对象不可调用

Sam*_*ord 7

使用Callable来自的类型typing。该Callable类型是通用的,所以您可以指定功能的签名。

from typing import Callable

def high_order_math(a: float, b: float, func: Callable[[float, float], float]) -> float:
    return func(a, b)
Run Code Online (Sandbox Code Playgroud)

  • 从OP对“显式类型”一词的使用以及他们在类型注释上的占位符尝试,我已经非常清楚了。如果我错了,我相信OP会要求澄清。:) (3认同)
  • 如果那是“足够清楚”,那么“具有您的经验和代表的人”应该已经看到这是明显的重复。[这通常是规范的重复项](/sf/ask/2648462561/​​-my-type-hints)。确实,无论哪种方式,它都是重复的。我知道这并不总是显而易见的,但总是值得检查这些问题 (2认同)