转自http://www.cnblogs.com/BeginMan/p/3178103.html

一、lambda函数

1、lambda函数基础:

lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的。如下:

"""命名的foo函数"""
def foo():return 'beginman' #Python中单行参数可以和标题写在一行
"""lambda关键字创建匿名函数,该表达式同以上函数"""
lambda:'beginman'

上面的只是简单的用lambda创建一个函数对象,并没有保存它也没有调用它,时刻会被回收了。这里我们保存并调用:

bar = lambda:'beginman'
print bar() #beginman

从上面几个例子中,可易理解Python lambda语法:

lambda [arg1[,arg2,arg3....argN]]:expression

lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象。

print lambda:'beginman'   #<function <lambda> at 0x00B00A30>

2、无参数

如果没有参数,则lambda冒号前面就没有,如以上例子。

3、有参数

def add(x,y):return x+y
add2 = lambda x,y:x+y
print add2(1,2) #3 def sum(x,y=10):return x+y
sum2 = lambda x,y=10:x+y
print sum2(1) #11
print sum2(1,100) #101

二、lambda与def

上面的例子中,可知lambda函数只是创建简单的函数对象,是一个函数的单行版本,但是这种语句由于性能的原因,调用的时候绕过函数的栈分配。python lambda还有哪些和def不一样呢?

1 、python lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量。

如:

>>> def foo():return 'foo()'
>>> foo
<function foo at 0x011A34F0>

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

最新文章

  1. lua中的string类型
  2. CSS3入门之转换
  3. -[UIViewController _loadViewFromNibNamed:bundle:]
  4. [转]js动态获取图片长宽尺寸
  5. struts2学习笔记之一:基本简介
  6. ResultSet的getInt(),getString()方法
  7. lua Date和Time
  8. Maven 仓库
  9. SQLServer的ISNULL函数和Mysql的IFNULL函数
  10. HTML--鼠标事件
  11. html 字符串互转DOM
  12. Oracle RAC学习笔记02-RAC维护工具集
  13. Retinex图像增强算法
  14. 数据库索引(Oracle和Mysql)学习总结
  15. Promise 异步函数的加上外壳终止Promise
  16. MT【20】一道三次函数的难题
  17. sessionStorage在项目中的应用
  18. Docker镜像相关
  19. PDF常见问题总结
  20. Educational Codeforces Round 21 Problem E(Codeforces 808E) - 动态规划 - 贪心

热门文章

  1. Transactional事务管理操作
  2. Code::Blocks
  3. Golang 标准库提供的Log(一)
  4. leetcode 596 BUG笔记
  5. Linux 一些常识命令
  6. [待解决]报错:JSON parse error: Unexpected character
  7. 关于Ms Sql server 表列等是否存在
  8. Quartz CronTrigger 整配置说明
  9. linux每日命令(2):ps命令
  10. String,StringBuffer,StringBuilder