Python中lambda函数基本使用方法

yuday 2020-03-15 11:18 

函数可以提高应用程序的模块化和代码的重复利用。Python提供了丰富的内置函数,我们还可以自定义自己需求的函数数,除此之外python还可以通过lambda 来创建匿名函数(lambda表达式)。

什么是匿名函数

所谓的“匿名函数”您可以通过不命名函数来减少代码量,函数体比def简单很多 。

Lambda的主体是一个表达式,而不是代码块,该表达式中只能封装有限的逻辑。

Lambda函数具有其自己的名称空间,并且无法访问其自己的参数列表之外或全局名称空间中的参数。

尽管lambda函数只能写一行,但它们并不等效于C或C ++内联函数。后者的目的是通过在调用小函数时不占用栈内存从而增加运行效率。


▼用法示例

以下分别用lambda表达式和def普通函数方式演示求两个数的乘方:


#lambda表达式演示:

n = lambda a : a**2

print(n(6))

#执行结果 :36


#普通函数演示 :

def n(a):

return a**2

print(n(6))

#执行结果: 36


#下面我们使用map()和filter()函数作为示例。


# map函数(lambda表达式) :

num = [1, 2, 3, 4, 5]

for n in map(lambda n:n**2, num):

print(n)

#执行结果:1 4 9 16 25

对数字列表中的所有值进行平方后,将输出以上内容。


#列表解析的方式完成同样的过程 :

num = [1, 2, 3, 4, 5]

s = [n**2 for n in num]

print(s)

#执行结果:[1, 4, 9, 16, 25]


比较一下哪个更容易阅读?


#filter函数(lambda表达式):

num = [1, 2, 3, 4, 5]

for n in filter(lambda n:n%2!=0, num):

print(n)

#执行结果:1 3 5

上面的代码仅从数字列表中的值中提取并输出奇数。


#列表解析的方式完成同样的过程 :

num = [1, 2, 3, 4, 5]

odd = [n for n in num if n%2!=0]

print(odd)

#执行结果:[1, 3, 5]


个人感觉lambda的可读性一般, 不如常规的函数直观。毕竟,可读性会因人而异 ,但是优点是非常的简洁,在终端窗口下操作要比def方式方便的多。

发表评论


表情