python匿名函数------lambda表达式
1.为什么要使用lambda?
1、当我们将函数作为参数传入某个函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
2、lambda函数主要用来写一些小体量的一次性函数,避免函数名重复污染环境,同时也能简化代码。
3、lambda起到了一种函数速写的作用,允许在使用的代码内嵌入一个函数的定义。他们完全是可选的(你总是能够使用def来替代它们),但是你仅需要嵌入小段可执行代码的情况下它们会带来一个更简洁的代码结构。
2.lambda语法
lambda [arg1[, arg2, ... argN]]: expression
冒号前面的表示该函数的输入参数,冒号的表达式的计算结果就是该函数的返回值。
举个例子:下面的函数表示对两个序列中对应元素求和
queue1 = range(10)
queue2 = range(10)
print map(lambda x,y : x+y
等价于
def f(x,y):
return x+y
queue1 = range(10)
queue2 = range(10)
print map(f,queue1,queue2)
3. lambda表达式还可以赋给一个变量
e.g.下面的程序赋给f判断一个数是否为偶数的能力,我们可以通过类似f(1),f(2)这样的用法来使用f了
f = lambda x : True if x%2==0 else False
等价于
def f(x):
if(x%2==0):
return True
else
return False
测试结果
4.lambda表达式作为函数的返回值
lambda表达式可以直接作为一个函数的返回值(此时这个返回值是一个函数)
def build(x, y):
return lambda: x * x + y * y
比如我们执行build(3,4)得到的是一个代表3*3 + 4*4的表达式,并不是计算结果。如果需要得到计算结果,需要将该返回值作为函数再执行一次
总结:
1、lambda只是一个表达式,函数体比def简单很多
2、lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去
3、lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数
4、 简单单行代码或者一次性的函数可以用lambda函数来书写,可以让代码更简洁。
5、 对于复杂函数或者函数体体量大的函数,最好不要用lambda函数,会增加代码的阅读难度,使代码晦涩难懂。
6、 在非多次调用的函数的情况下,lambda表达式即用既得,提高性能
还没有评论,来说两句吧...