lambda表达式(匿名函数表达式)
作用:创建一个匿名函数对象。同def类似,但不提供函数名。
语法:lambda [形参1,形参2,…] : 表达式
语法说明
- lambda 只是一个表达式,它用来创建一个函数对象。
- 当lambda表达式调用时,先执行冒号后的表达式,并返回表达式的结果的引用。
- lambda 表达式创建的函数只能包含一条表达式。
- lambda 表达式比函数简单,且可以随时创建和销毁,有利于减少程序的偶合度。
把lambda函数赋值给一个变量
# 定义一个加法函数,并把值赋给变量myadd,就可以执行myadd(5, 6); myadd = lambda x, y: x+y print myadd(5, 6) # 结果:11
把lambda函数赋值给其他函数
import time, datetime
time.sleep = lambda x: None # time 库的 sleep 函数不会执行原功能;
starttime = datetime.datetime.now() time.sleep(3) endtime = datetime.datetime.now() print endtime-starttime # 结果:0:00:00
把lambda函数作为其他函数的返回值
def add(n): return lambda x: x+n myadd = add(5) print myadd(15) # 结果:20 def add(x): def inner(y): return x+y return inner myadd = add(5) print myadd(15) # 结果:20
把lambda函数做参数传给其它函数(map, filter, reduce)
# 利用map映射函数输出序列加工后的新序列。 print map(lambda x: x ** 2, range(1, 3)) # 结果:[1, 4] map返回类型:<type 'list'> def arr(x): return x ** 2 print map(arr, range(1, 3)) # 结果:[1, 4] map返回类型:<type 'list'> # 利用filter过滤函数输出0-9的奇数;返回False时将此数据丢弃,返回True,则保留此数据 print filter(lambda x: x % 2, range(10)) # 结果:[1, 3, 5, 7, 9] filter返回类型:<type 'list'> def odd(x): return x % 2 print filter(odd, range(10)) # 结果:[1, 3, 5, 7, 9] filter返回类型:<type 'list'>
eval和exec函数
高阶函数