一、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

def sum(x,y=10):return x+y
sum2 = lambda x,y=10:x+y

二、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. Node.js高效按行输出文件内容
  2. ExpressQuantumGrid4的cxGrid的一些使用方法和经验
  3. .net 获取https页面的信息 在iis7.5服务器上不管用
  4. jetty之安装,配置,部署,运行
  5. xml 个人练习2
  6. jquery mobile展开项collapsible
  7. Linux查找yum安装软件在系统中路径
  8. 初步认识ExtJS
  9. 【Leetcod】Unique Binary Search Trees II
  10. javascript中this的指向
  11. Hangfire使用ApplicationInsigts监控
  12. heartbeat.go
  13. LogXGEController: Error: XGE version 8.01 (build 1867) or higher is required for XGE shader
  14. 创建视图sql
  15. C语言学习笔记 (001) - 常量指针与指针常量的区别(转帖)
  16. tcp网络通信的三次握手与三次挥手
  17. linux下使用docker-thunder-xware进行离线下载
  18. 【UOJ Round #8】
  19. mongo文本搜索的一个例子
  20. ftplib模块【python】

热门文章

  1. php 方便快捷导出excel
  2. 单元测试mock之mockito使用
  3. UnionPay,ChinaPay 最新 银联支付接口C#\Asp.net\MVC 版本
  4. Oracle 数据库表同步方法浅议
  5. IOS RSA 加密方式
  6. Linux64位服务器编译安装MySQL5.6(CentOS6.4)
  7. [原]quick2.25让描边闪起来
  8. [AX2012 R3]在SSRS报表中使用QR二维码
  9. GCC 编译使用动态链接库 LD
  10. Mac安装win7