码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习笔记——高阶函数

时间:2015-07-10 23:35:03      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

变量可以指向函数: 

 

>>> abs(-8)
8
>>> abs
<built-in function abs>

     可以看出abs(-8)是函数调用,而abs是函数本身

  如果我们要获得函数调用结果,我们可以把结果赋值给变量:

>>> x = abs(-8)
>>> x
8

  如果把函数本身赋值给变量:

>>> f = abs
>>> f
<built-in function abs>

  结论:函数本身也可以赋值给变量。

  如果一个变量指向了一个函数,那么能通过该变量来调用这个函数。

>>> f = abs
>>> f(-8)
8

  

函数名也是变量

  函数名其实就是指向函数的变量!对于abs()这个函数,完全可以把函数名abs看成变量,它指向一个可以计算绝对值的函数!

如果把abs指向其他对象,会发生什么呢?

>>> abs = 8
>>> abs(-8)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ‘int‘ object is not callable

  把abs指向8后,就无法通过abs(-8)调用该函数了,因为abs这个变量已经不指向求绝对值函数了。

     ps:由于abs函数实际上是定义在__builtin__模块中的,所以要让修改abs变量的指向在其它模块也生效,要用__builtin__.abs = 8

传入函数

  既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

例如:

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

  推导计算过程为:

x ==> 3
y ==> -5
f ==> abs
f(x) + f(y) ==> abs(3) + abs(-5) ==> 8

结论:

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

Python学习笔记——高阶函数

标签:

原文地址:http://www.cnblogs.com/tyy-man/p/4637641.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!