lambda [参数列表]:表达式
lambda [arg1[,arg2,arg3…argN]]:expression
lambda 就是匿名函数。
fun = lambda x:x+1 print(fun(1))
【案,举例,lambda是匿名函数关键字,x是输入参数,x+1是表达式。因为匿名函数返回是一个函数,这一点非常重要,fun是被赋予函数的函数变量,fun(1),将参数1给到匿名函数,得到的结果是1+1=2】
2 将 lambda 表达式作为参数传递给其它函数的例子my_list = [(1, 2), (3, 1), (4, 0), (11, 4)] my_list.sort(key=lambda x: x[1]) print(my_list)
[(4, 0), (3, 1), (1, 2), (11, 4)]
【案,这里的匿名函数,把参数x[1]传递给了sort的key,这样sort按照第二个元素的大小进行排序,也就是上面的结果,右侧的元素,从0,1,2,4进行排序】
my_list = [(1, 2), (3, 1), (4, 0), (11, 4)] my_list.sort(key=lambda x: x[0]) print(my_list)
【案,现在我们用第一个元素排序,结果呢,如下】
3 用匿名函数屏蔽正常函数功能[(1, 2), (3, 1), (4, 0), (11, 4)]
sorted = lambda *args:None x = sorted([3,2,1]) print(x)
None
【案,这里相当于把sort的函数给屏蔽了,他的输出没有,这个对调试有帮助】
4 用来做闭包(Closure)编程def fun(n):
return lambda x:x+n
new_fun = fun(2)
print(new_fun)
# 输出内容:. at 0x00000000028A42F0>
【由于匿名函数返回是函数地址,那么放到另外一个函数的返回上,相当于吧匿名函数的返回给包装了,那么匿名函数也就成了一个内部函数】



