高阶函数
定义:把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式.
理解:个人以为这种思想和逻辑思路,在C语言上早就有,C中的指向函数指针的指针这种思想概念是可以的,而OC中却没有强化这种概念,OC的Block已经强大到足够完成这种纬度的调用和处理业务的场景复杂度,JavaScript这种脚本语言和Python解释型语言反而愈加强化这种观念,将函数(本质上是指针)作为参数使用传递.
变量可以指向函数
>>> x = abs(-10)
>>> x
10
abs是函数,abs(-10)是函数的调用,上面是将abs(-10)的结果赋值给x;
>>> f = abs
>>> f
<built-in function abs>
上面是将abs函数整体赋值给f,也就是函数本身赋值给变量,即:变量可以指向函数.
当一个变量指向了一个函数,那么可以通过该变量来调用这个函数;
>>> f = abs
>>> f(-10)
10
直接调用abs()函数和调用变量f()完全相同;
函数名也是变量
那么函数名是什么呢?函数名其实就是指向函数的变量!对于abs()这个函数,完全可以把函数名abs看成变量,它指向一个可以计算绝对值的函数!
传入函数
既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数.
def add(x, y, f):
return f(x) + f(y)
当调用add(-5, 6, abs)时,推导计算过程为
x = -5
y = 6
f = abs
f(x) + f(y) ==> abs(-5) + abs(6) ==> 11
return 11
编写高阶函数,就是让函数的参数能够接收别的函数.
more >>