Higher-order function,高阶函数。
变量可以指向函数
>>> abs(10) 10 >>> abs <built-in function abs>
可以看到abs(10)是调用函数,直接输入abs则是函数本身。我们可以把函数计算结果赋值给变量,也可以把函数赋值给变量:
>>> x = abs(10) >>> x 10 >>> f = abs >>> f <built-in function abs> >>> f(10) 10
函数abs被赋予变量f,f就指向了函数,也可以像函数一样调用。
函数名也是变量
其实,可以把函数名当做指向函数的一个变量,想一想我们自己定义一个函数时,函数名是不是自己命名的,其实就是给这个变量赋值了。对于abs()这个函数,可以把abs看成一个变量,它指向了一个可以计算绝对值的函数,如果把abs指向其他对象会如何:
>>> abs = 10 >>> abs(-10) Traceback (most recent call last): File "<pyshell#48>", line 1, in <module> abs(-10) TypeError: 'int' object is not callable
abs指向10之后,就无法通过abs(-10)调用原本的计算绝对值函数了,当然实际使用中绝对不可以这样用,要恢复abs函数,重启交互环境即可
把函数作为参数传入
上面说了变量可以指向函数,函数参数可以接收变量,那么一个函数也可以作为参数传入另一个函数,这就叫做高阶函数!如下:
>>> def add(x,y,z): return z(x) + z(y) >>> add(-5,5,abs) 10