1、变量可以指向函数
以内置的求绝对值abs()函数为例,:
>>> abs(-12) 12 >>> abs <built-in function abs> >>> m = abs >>> m <built-in function abs>
>>> m(-12)
1
可知,函数本身可以赋值给变量,即:变量指向函数。此时,我们可以通过变量来调用这个函数!
2、函数名其实也是变量
>>> abs = 10 >>> abs(-10) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not callable
当abs指向10的时候,就无法通过abs(-10)调用该函数了。因为函数名其实就是一个指向函数的变量!abs这个变量已经指向一个整数-10!要恢复abs的原始功能,就要重启python的交互环境了。
3、高阶函数
既然变量可以指向函数,而函数的参数又能接收变量,那么一个函数就可以接收另外一个函数作为参数。这样的函数就是高阶函数。简单举例:
>>> def add(x,y,f): ... return f(x)+f(y) ... >>> add(6,7,abs) 13
推导过程如下:
x = 6 y = 7 f = abs f(x) + f(y) ==> abs(6) + abs(7) ==> 11 return 13