函数可以提高应用程序的模块化和代码的重复利用。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方式方便的多。
Social Plugin