下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

【Python 课堂】第70课—— lambda 表达式怎么用

作者:在线学习平台     来源: www.kokojia.com点击数:767发布时间: 2014-10-29 11:47:45

标签: Python课堂lambda表达式lambda运用

大神带你学编程,欢迎选课

Python 是一门简洁的语言,lambda 表达式则充分体现了 Python 这一特点。
 
lambda 表达可以被看做是一种匿名函数技能培训。它可以让你快速定义一个极度简单的单行函数。譬如这样一个实现三个数相加的函数:
 
def sum(a, b, c):
return a + b + c
 
print sum(1, 2, 3)
print sum(4, 5, 6)
 
输出:
6
15
 
如果使用 lambda 表达式来实现:
 
sum = lambda a, b, c: a + b + c
 
print sum(1, 2, 3)
print sum(4, 5, 6)
 
输出:
6
15
 
两种方法的结果是相同的。
 
lambda 表达式的语法格式:
 
lambda 参数列表: 表达式
 
定义 lambda 表达式时,参数列表周围没有括号,返回值前没有 return 关键字,也没有函数名称。
 
它的写法比 def 更加简洁。但是,它的主体只能是一个表达式,不可以是代码块视频教程,甚至不能是命令(print 不能用在 lambda 表达式中)。所以 lambda 表达式能表达的逻辑很有限。
 
lambda 表达式创建了一个函数对象,可以把这个对象赋值给一个变量进行调用,就像上面的例子中一样。
 
 
来看一个复杂一点的例子,把 lambda 表达式用在 def 函数定义中:
 
def fn(x):
return lambda y: x + y
 
a = fn(2)
print a(3)
 
输出:
5
 
这里,fn 函数的返回值是一个 lambda 表达式,也就等于是一个函数对象。当以参数2来调用 fn 时,得到的结果就是:
lambda y: 2 + y
 
a = fn(2) 就相当于:
a = lambda y: 2 + y
 
所以 a(3) 的结果就是5。
 
 
lambda 表达式其实只是一种编码风格,这种写法更加 pythonic。这并不意味着你一定要使用它。事实上,任何可以使用 lambda 表达式的地方,都可以通过普通的 def 函数定义来替代。在一些需要重复使用同一函数的地方,def 可以避免重复定义函数。况且 def 函数更加通用,某些情况可以带来更好地代码可读性。
 
而对于像 filter、sort 这种需要内嵌函数的方法,lambda 表达式就会显得比较合适。这个我以后会再单独介绍。
 
当然对于初学者来说在线学习,了解 lambda 表达式还有一个重要作用就是,看懂别人写的代码。

赞(15)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程