python匿名函数lambda_匿名函数lambda

本文介绍了Python中的lambda匿名函数,它用于快速定义简短的、不需要重复使用的函数。通过示例展示了如何使用lambda定义一元和多元函数,以及在map等函数中的应用。lambda函数与def定义的函数的主要区别在于名称、表达式限制和适用场景。掌握lambda函数能提升代码的简洁性和优雅性。

Python有一种定义函数的机制,叫做lambda。使用lambda关键字定义的函数,也被称为匿名函数。本文介绍如何使用Python的lambda匿名函数。

用举例的方式来说明lambda匿名函数应该是最好的方式:

>>> f = lambda x: x*2

>>> f(3)

6

>>> f(6)

12

>>> f(9)

18

>>> def fwn(x):

... return x*2

...

>>> fwn(3)

6

>>> fwn(6)

12

>>> fwn(9)

18

以上代码,先定义了一个匿名函数f,此函数有一个参数,函数功能是返回此参数的2倍数。然后使用def定了一个有名的函数fwn(function with name),实现了同样的功能。

f 不是函数名,f 只是一个指向函数地址的变量,lambda定义的函数没有名称,如果失去地址引用,此函数也就消失,无法再被调用了。而def定义的函数,就有个名字,什么时候都可以去调用它。

lambda匿名函数的语法定义:

lambda [arg1 [, agr2,.....argn]] : expression

语句由lambda关键词开始,冒号(:)左边是参数,后边是一个表达式。因此可以看出,这种匿名函数,一行代码就搞定,简化了函数定义。

lambda匿名函数与def定义函数的区别:

def创建的函数是有名称的,而lambda没有;

Lambda表达式的“:”后面,只能有一个表达式,def则可以有多个;

if,for,print等语句不能用于lambda中,def可以;

Lambda一般用来定义简单的函数,而def可以定义复杂的函数。

再看几个代码示例:

>>> f = lambda x:x.split()

>>> a = 'a b c d e'

>>> f(a)

['a', 'b', 'c', 'd', 'e']

>>> b = '1 2 3 4 5'

>>> f(b)

['1', '2', '3', '4', '5']

f 指向的匿名函数,实现了使用空格来切分字符串的功能,返回一个切分后的list对象。

>>> g = lambda x,y,z: str(x*y+z)

>>> g(1,2,3)

'5'

>>> g(5,6,7)

'37'

这是个多参数lambda匿名函数的示例。g指向的函数可以接受3个参数,返回这个三个参数的运算结果的字符串。

>>> for i in map(lambda x,y:x*y, range(10), range(5)):

... print(i)

...

0

1

4

9

16

这是lambda函数在Python内置的map函数中的用法,非常简洁,省去了使用def来定义的函数,可读性也非常好。

需要注意一个细节,lambda匿名函数的参数并不是必须的,例如:

>>> f = lambda:print('abcd')

>>> f

>>> f()

abcd

无参数的lambda函数特性,常常用来实现tkinter编程的时候,Button对象的command实现传参的功能。

以上就是对Python提供的lambda匿名函数机制的介绍,掌握并熟练使用这样的语法技巧,可以让你写的Python代码更漂亮更优雅。

-- EOF --

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值