高阶函数
来源:互联网 发布:整理桌面的软件 编辑:程序博客网 时间:2024/05/22 03:18
- 函数可以赋值给变量,即变量可以指向函数,函数名其实就是指向函数的变量。
高阶函数
- 函数将另一个函数作为参数,这种函数称之为高阶函数。
思维导图:
内置的高阶函数
map()#接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并将结果以列表形式返回。
reduce #把一个函数作用在序列上,函数必须接收两个参数,reduce把结果继续和下一个元素做累积计算。
实现10!
def cheng(x,y): return x*yprint reduce(cheng,range(1,11))
reduce(add,[1,2,3,4])===>
add(add(add(1,2),3),4)
reduce(cheng,range(1,11))
** 求10的阶乘:
- filter #接收一个函数和序列,和map()不同的是,filter()将传入的函数依次作用于每个元素,然后根据返回值是True或者False决定是否保留该元素。
In [15]: def is_oushu(n): ....: if n%2 == 0: ....: return True ....: else: ....: return False ....: In [16]: filter(is_oushu,range(1,11))Out[16]: [2, 4, 6, 8, 10]
- sorted()
n [20]: l = ["a","Ab","cd","C"]In [21]: sorted(l)Out[21]: ['Ab', 'C', 'a', 'cd']In [22]: def cmp_ignore_case(s1,s2): ....: s1 = s1.lower() ....: s2 = s2.lower() ....: if s1 < s2: ....: return -1 ....: elif s1 > s2: ....: return 1 ....: else: ....: return 0 ....: In [23]: sorted(l,cmp_ignore_case)Out[23]: ['a', 'Ab', 'C', 'cd']
函数作为返回值
高阶函数除了可以接受函数作为参数外,还可以把函数作为返回值。
def lazy_sum(*args): def cacl_sum2(): return sum(args) return cacl_sum2f=lazy_sum(1,2,3,4,5) print f()
调用lazy_sum()时,每次调用都会返回一个新的函数。
匿名函数
- 在不需要显示地定义函数时,直接传入匿名函数更方便。
- 关键字lambda表示匿名函数,格式:lambda 参数 : 运算。
- 匿名函数只能有一个表达式,不用写return,返回值就是表达式的结果。
匿名函数实现10!:
print reduce(lambda x,y:x*y,range(1,11))
比之前的
def cheng(x,y): return x*yprint reduce(cheng,range(1,11))
简便很多!
- 匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用改函数。
f=lambda x,y:x+yprint f(1,2)f=lambda x=2,y=3:x+yprint f()
- 匿名函数也可作为返回值。
装饰器
装饰器是用来装饰函数的。
- 增强函数功能;
- 不希望修改原函数的定义;
- 在代码运行期间动态增加功能的方式。
给函数添加运行时间:
import timedef timer(func): def wait(*args,**kw): start_time=time.time() func() stop_time=time.time() print "%s running time:%s"%(fun.__name__,stop_time-start_time) return wait@timerdef login(): time.sleep(1) print "login"def register(): time.sleep(2) print "register"register=timer(register) #等价于在函数头添加@timerlogin()register()
装饰器的实质是返回函数的高阶函数
阅读全文
0 0
- 高阶函数
- 高阶函数
- python高阶函数
- lecture5:高阶函数
- 高阶函数
- 高阶函数,集合
- js高阶函数
- 高阶函数
- 高阶函数
- Scala高阶函数
- js高阶函数
- Scala 高阶函数
- 高阶函数应用
- 3.2-高阶函数
- scala------高阶函数
- C++高阶函数
- js高阶函数
- 高阶函数
- xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at
- MySQL存储引擎介绍
- 设计模式-命令模式 C++实现
- dyne-cm Nm互转
- 4.3定时器框架(Timer Framework)
- 高阶函数
- DA-TLC5615
- HTML总结——3
- 机器学习算法调优
- HDU 5778(暴力)
- SAM E54 Xplained Pro评估套件中文用户手册
- bootstrap popover弹框内容换行
- c++的头文件的一些问题
- Ubuntu 16.04下安装64位谷歌Chrome浏览器