#####1、三元表达式 举一个简单的列子,不少地方都有这样的规定,好比用水或者用电,假设用水价格为3R/立方米,当你每月用超过7立方米后,超出的水按照3.3R/立方米计价。而后写一个程序计算一个家庭每个月的水费。函数
>>> def cost(x): ... if x < 7 : ... pay = x*3 ... elif x > 7: ... pay = 21 + (x-7)*3.3 ... return pay
这个程序段很是简单,逻辑就不用说了,条件不一样计价方式就不同,可是当咱们用三元表达式去写一样功能的这段函数是这样的 pay = x*3 if x < 7 else (21+(x-7)*3.3)
再来一个简单的例子,两个数,咱们返回其中较大的那个数。code
>>> def max_(a, b): ... if a > b: ... max = a ... else: ... max = b ... return max
当用三元表达式来来写就能够是:max = a if a > b else b
看起来就简洁不少了,这才是Python吗!字符串
#####2、lambdait
>>> def add(x, y) ... sum = x+y ... return sum
用lambda表达式来写就是:add = lambda x, y:x+y
而后直接调用add(1, 2)就能够获得结果 若是把三元式中的cost函数列子用lambda表达式来写就是:再增长一个抄表服务费,参数sclass
>>> cost = lambda x, s: (x*3 if x < 7 else (21+(x-7)*3.3)) + s >>> cost(6, 4) 22
能够看到lambda的使用让咱们大量的简化了代码,看起来更美观简洁,固然是牺牲了一些可读性,让不熟悉Python的人看得不是很明白 下面介绍一个列子来了解为何要用lambda processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
效率
在Visual Basic,你颇有可能要建立一个函数,接受一个字符串参数和一个 collapse 参数,并使用 if 语句肯定是否压缩空白,而后再返回相应的值。这种方式比较低效,由于函数可能须要处理每一种可能的状况。每次你调用它,给出你结果前,都要判断是否要压缩空白。在 Python 中,你能够将决策逻辑拿到函数外面,而定义一个裁减过的 lambda 函数提供确切的 (惟一的) 你想要的。这种方式更为高效、更为优雅,并且不多引发那讨厌的bug。` lambda 定义了一个匿名函数 lambda 并不会带来程序运行效率的提升,只会使代码更简洁。 若是可使用for...in...if来完成的,坚定不用lambda。 若是使用lambda,lambda内不要包含循环,尽可能定义函数来完成,使代码得到可重用性和更好的可读性。 总结:lambda 是为了减小单行函数的定义而存在的。