python 中的 lambda 函数——匿名函数:返回值是一个函数的地址,即函数对象

Lambda 函数又称匿名函数,也有人称为 lambda表达式。
顾名思义,匿名函数就是没有名字的函数。
函数没有名字也行吗?当然可以啦。
有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要非给它取个名字不可。

lambda 匿名函数的格式是—— lambda 参数: 表达式,
冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式。
其实 lambda返回值是一个函数的地址,也就是函数对象。

如下所示,是一个最简单的 lambda 函数:

remainder = lambda num: num %2
print(remainder(5))

输出结果:
1

这段代码中,lambda num: num%2是lambda函数。
num是参数,num%2是表达式,用来计算后返回结果。
该表达式获取输入参数除以2的模数并返回。
将5作为参数传入,通过除以2进行计算,得到余数1.

add = lambda x, y: x+y
type(add)
<class 'function'>
print(add(3,5))
8

既然是匿名函数,为什么还要给它取个叫 add 的名字?这的确是多次一举。
其实 lambda 最常用的还是和 sorted, map、reduce、filter 这些高级函数结合使用。

再来看两个使用 lambda 函数结合 sorted 方法排序的经典例子:一个按绝对值大小排序,一个按字符串长度排序

list1 = [ 5, -3, 1, 8, -4 ]
list2 = sorted(list1, key=lambda x:abs(x))
print(list2)
[1, -3, -4, 5, 8]
list3 = ['to', 'python', 'ABC']
list4 = sorted(list3, key=lambda x:len(x))
print(list4)
['to', 'ABC', 'python']

如下所示,是一道关于 lambda 函数的经典面试题,flist[0] 结果输出什么呢?

flist = [ lambda x:x*x for x in range(1, 3)]
print(flist)
[<function <listcomp>.<lambda> at 0x03ADE2B8>, <function <listcomp>.<lambda> at 0x03ADE300>]
flist[0]
<function <listcomp>.<lambda> at 0x03ADE2B8>
 flist[0](2)
4
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值