一、lambda函数
1、lambda函数基础:
lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的。如下:
上面的只是简单的用lambda创建一个函数对象,并没有保存它也没有调用它,时刻会被回收了。这里我们保存并调用:
从上面几个例子中,可易理解python lambda语法:
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象。
2、无参数
如果没有参数,则lambda冒号前面就没有,如以上例子。
3、有参数
二、lambda与def
上面的例子中,可知lambda函数只是创建简单的函数对象,是一个函数的单行版本,但是这种语句由于性能的原因,调用的时候绕过函数的栈分配。python lambda还有哪些和def不一样呢?
def与lambda的区别 : 它们的主要不同点是python def 是语句而python lambda是表达式 ,理解这点对你了解它们很重要。
使用lambda函数还有一些注意事项: lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。 lambda 函数不能包含命令,包含的表达式不能超过一个。
1 、python lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量。
2、python lambda它只是一个表达式,而def则是一个语句。lambda表达式运行起来像一个函数,当被调用时创建一个框架对象。
三、lambda函数的用途
个人认为有以下:
1、对于单行函数,使用lambda可以省去定义函数的过程,让代码更加精简。
2、在非多次调用的函数的情况下,lambda表达式即用既得,提高性能
注意:如果for..in..if能做的,最好不要选择lambda
四、参考
http://www.cnblogs.com/coderzh/archive/2010/04/30/python-cookbook-lambda.html
http://www.cnblogs.com/wanpython/archive/2010/11/01/1865919.html
lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。
如上所示,使用lambda表达式定义了一个匿名函数,用于筛选100以内的3的倍数,并生成一个列表。
当然lambda也可以嵌套在一个函数内使用,如上,函数中嵌套了一个lambda表达式。
然后,要使用的时候可以用一个变量来接收,显示double变量,double变量是一个函数,并且需要一个参数,参见lambda表达式,需要一个s参数。
最后,调用double变量,并且传入参数 8 ,得到返回值16。因为前面传入的n的值为 2 ,故 2 * 8 得到16。
内置bif介绍:
filter():简单的理解为过滤器,需要两个参数,function,和一个序列(字符串、列表、元组都是序列),过滤器会依次将序列的值传入function中,
如果返回true的话,将其重新生成一个列表返回。
filter() 函数创建了一个迭代器,因此如果你想得到一个列表的话,就得像示例那样使. 用 list() 去转换。
zip():字面意思理解,就是zip打包,可以将多个序列进行打包,它会将序列拆分,然后把第一个序列和第二个序列的元素依次组成元组,2个一组组合成列表。
不过要注意的是,这是以最短序列来组合的,就是说如果一个序列比较长,一个比较短的话,组合只会进行到断序列的最后一个元素,多余的部分会被抛弃。
map():映射,用法和filter()类似,也是将序列放入函数进行运算,但是,不论运算结果为什么,map()都将忠实反馈,这是map()和filter()的主要区别。请注意,filter()和map()中的function都必要有一个返回值。
我比较认同电影《教父》里的人生观: 第一步要努力实现自我价值,第二步要全力照顾好家人,第三步要尽可能帮助善良的人,第四步为族群发声,第五步为国家争荣誉。 事实上作为男人,前两步成功,人生已算得上圆满,做到第三步堪称伟大,而随意颠倒次序的那些人,一般不值得信任。
def saver(x=[]): x.append(1) print x saver([2]) saver() saver() saver()