嵌套函数是否属于高阶函数?含dispatch dictionary的情况判定
关于嵌套函数与高阶函数的判定
首先明确高阶函数的核心判定标准:要么接收函数作为参数,要么返回函数作为结果,两个条件满足其一即可。
嵌套函数是否属于高阶函数?
嵌套函数只是“在一个函数内部定义另一个函数”的写法,本身不等同于高阶函数:
- 如果外层的嵌套函数既不接收函数作为参数,也不返回内部定义的函数,那它就是普通函数,不属于高阶函数。比如:
def outer(): def inner(): print("hello") print("outer function runs")
这个outer只是内部定义了inner,但既不用函数当参数,也不返回inner,完全是普通函数。
- 但如果外层函数返回了内部定义的函数,或者接收其他函数作为参数,那就符合高阶函数的定义。比如下面这个返回内部函数的例子,就是典型的高阶函数:
def outer(): def inner(): print("hello") return inner
返回dispatch字典的嵌套函数是否属于高阶函数?
这类函数返回的是包含函数的字典,返回值本身是字典而非函数:
- 如果它同时也不接收函数作为参数,就不满足高阶函数的任一判定条件,因此不属于高阶函数。比如:
def create_dispatch(): def add(x, y): return x + y def sub(x, y): return x - y return {"add": add, "sub": sub}
这个create_dispatch返回的是存了函数的字典,但既不接收函数参数,也不直接返回函数,所以不是高阶函数。
- 只有当这类函数同时满足“接收函数作为参数”时,才会被判定为高阶函数。
内容的提问来源于stack exchange,提问作者B1ackOut42
相关产品推荐
相关产品推荐

