python高阶函数

什么是高阶函数?根据例子一步步来

变量可以指向函数

以python内置的求绝对值的函数abs为例,我们可以有下面几种调用方法

>>> abs(-10)
10

但是如果只写abs呢?

>>> abs
<built-in function abs>

abs(-10)是函数的调用,abs是函数本身

我们知道结果可以赋值给变量,函数是否可以呢?

>>> x=abs(-10)
>>> x
10
y=abs
>>> y
<built-in function abs>

结论:函数也可以赋值给变量,即变量可以指向函数

用这个变量调用函数试一试

>>> y(-10)
10

成功了!!!abs(-10)和y(-10)一毛一样

函数名也是变量

abs()函数可以看作abs这个变量指向了一个可以求绝对值的函数

>>> 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确实是个变量,如果想要使用abs正常的功能,只能重启python交互环境。

什么才是高阶函数呢

既然变量可以指向函数,函数又能接收变量,那么是不是就可以把函数当作变量传入另一个函数呢

 

>>> def add(x, y, f):
return f(x) + f(y)
>>> add(-2, 3, abs)
5

  

把函数作为参数传入,这样的函数称为高阶函数

 

posted @ 2017-07-22 22:30  显示-不成功  阅读(139)  评论(0编辑  收藏  举报