通过前面的了解, 我们已经知道函数名其实仅仅是一个普普通通的变量名而已.

那么是不是也意味着:函数也可以作为参数传递呢?

答案是肯定的!

一个可以接收函数作为参数的函数就是高阶函数!


一个最简单的高阶函数

def foo(x, y, f):  # f 是一个函数
    """
    把 x, y 分别作为参数传递给 f, 最后返回他们的和
    :param x:
    :param y:
    :param f:
    :return:
    """
    return f(x) + f(y)


def foo1(x):
    """
    返回参数的 x 的 3次方
    :param x:
    :return:
    """
    return x ** 3


r = foo(4, 2, foo1)    

print(r)    # 72

说明:

  1. 这里的 foo 就是高阶函数, 因为他接收了一个函数作为参数.

  2. foo1作为参数传递给了foo, 而且foo中的局部变量f接收了foo传递过来的数据, 那么最终是foof同时指向了同一个对象.

总结

编写高阶函数,就是让函数的参数能够接收别的函数。

把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。

Copyright © 李振超 2018 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-02-25 07:12:09

results matching ""

    No results matching ""