有趣的lambda函数


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吧 ,欢迎转载,但请保留我站链接,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值