您现在的位置: 365建站网 > 365文章 > 有趣的lambda函数

有趣的lambda函数

文章来源:365jz.com     点击数:258    更新时间:2009-09-19 10:31   参与评论


Python中内置了一个有意思的函数:lambda,允许我们快速定义单行的最小的函数,先来看一个简单的例子:
清单1

  1. >>>def f(x): 
  2. ...    return 2**x 
  3. ... 
  4. >>>f(3) 
  5. >>> 



我们可以用lambda函数实现:
清单2

  1. >>> a = lambda x:2**x 
  2. >>> a(3) 
  3. >>> 


当然也可以写成更简单方式:
清单3

  1. >>>(lambda x:2**x)(3) 
  2. >>> 



我们注意lambda函数与其他函数语法定义不同的地方:
1、参数列表周围没有括号
2、没有 return 关键字(它是隐含存在的,因为整个函数只有一行)
3、该函数没有函数名称,但是可以将它赋给一个变量来使用,此时变量中是lambda函数的引用

lambda 是一种风格问题。不一定非要使用它。假如你在你的项目中大量使用 lambda 函数,你会发现你的程序变得非常难于维护.(参考:<dive into python>)

我们再来看一个例子来深入学习:
清单4

  1. >>>a, b = 2, 4 #a=2, b=4 
  2. >>>(lambda x:x*x)(a and b) 
  3. 16 
  4. >>>(lambda x:x*x)(a or b) 
  5. >>> 



如果你学习过其他编程语言,比如 C 或者 pascal ,一定对形如 bool? a:b 这样的表达式很熟悉,当然python中也有类似的表达式,但是我们现在讨论的是将类似的表达式放到 lambda 函数中去,所以这时我们要用到奇妙的 and 和 or 运算.

来看一个 and 运算的例子:
清单5

  1. >>>'a' and 'b' 
  2. 'b' 
  3. >>> '' and 'b' 
  4. '' 
  5. >>> 'a' and 'b' and 'c' 
  6. 'c' 



1、使用 and 时,表达式从左到右进行运算,按照惯例,0,'',(),{},[],None 在布尔运算时为假;除此之外的任何东西都为真.
2、如果表达式中的某个值为假,and 运算返回第一个假值
3、所有值都为真,and 运算返回最后一个真值

在上面的例子中,'' 是第一个假值

来看一个 or 运算的例子:
清单6

  1. >>>'a' or 'b' 
  2. 'a' 
  3. >>>'' or 'b' 
  4. 'b' 
  5. >>>'' or [] or {} 
  6. {} 
  7. >>>def func(): 
  8. ...    print "in func()" 
  9. ...    return 1 
  10. >>>'a' or func() 
  11. 'a' 



1、or 的运算顺序和 and 相同,都是从左到右
2、它返回第一个真值,而且是立即返回,这意味着它将放弃后面的比较。(如果人生也能如此简单就好了)
3、如果所有的值都为假,它返回最后一个假值

现在我们回过头来再去看清单4中的例子,是不是觉得简单多了?

呵呵,是的,python 还有很多神奇之处,我会在学习的过程中不断的和大家分享。

本文来自 python吧 ,欢迎转载,但请保留我站链接,谢谢。

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (258人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号