2019年9月9日 / 500次阅读 / Last Modified 2019年9月9日
语法
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定义函数的区别:
再看几个代码示例:
>>> 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
<function at 0x7f20eac23400>
>>> f()
abcd
无参数的lambda函数特性,常常用来实现tkinter编程的时候,Button对象的command实现传参的功能。
以上就是对Python提供的lambda匿名函数机制的介绍,掌握并熟练使用这样的语法技巧,可以让你写的Python代码更漂亮更优雅。
-- EOF --
本文链接:https://www.pynote.net/archives/1091
《匿名函数lambda》有1条留言
前一篇:map函数
后一篇:如何在Button的command中传递参数?
©Copyright 麦新杰 Since 2019 Python笔记
简单点,lambda input:output,就是这样! [ ]