一、形式
【lambda x : 关于x的表达式】
lambda:关键字,表示匿名函数;
x:表示函数参数,可以有多个函数参数,如【lambda x,y: 表达式】
注意,匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。
二、应用
1、直接传入匿名函数作为高阶函数的参数。如:
>>> sorted([1, 3, 9, 5, 0], lambda x,y: -cmp(x,y)) [9, 5, 3, 1, 0]
匿名函数 lambda x,y: -cmp(x,y) 实际上(显式定义)为:
def f(x,y):
return -cmp(x,y)
2、返回函数的时候,也可以返回匿名函数。
>>> myabs = lambda x: -x if x < 0 else x >>> myabs(-1)
三、匿名函数简化代码的一个例子
# 删除 None 或者空字符串
简化前:
def is_not_empty(s):
return s and len(s.strip()) > 0
filter(is_not_empty, ['test', None, '', 'str', ' ', 'END'])
简化后:
print filter(is_not_empty, ['test', None, '', 'str', ' ', 'END'])
注:
s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。
当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ')
浙公网安备 33010602011771号