一、形式

【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', ' ')

posted on 2019-04-01 18:09  小二妮儿  阅读(236)  评论(0)    收藏  举报