一、概述
在python3中的匿名函数是用来处理一些简单的逻辑,简单的功能的,这样可以节省栈内存,在使用场景中,很多情况是用于某个函数的参数,或者一些只需要一句话的逻辑,接下来让我们看看匿名函数的使用
二、匿名函数的定义
定义匿名函数不再需要 def 来定义,而是使用 lambda 关键字来定义。lambda 的主体是一个表达式,而不是一个代码块,因此只能在lambda表达式中封装有限的逻辑,并且 lambda 函数拥有自己的命名空间,且不能访问直接参数列表之外或全局命名空间中的参数。
语法 : lambda [arg1[,arg2,.....argn]]:expression
三、lambda 定义匿名函数的示例
1、传入1个值,对这个值进行指定的操作后返回
test_1 = lambda a: a + 10
print('对这个数进行了某种不可描述的操作:', test_1(2))
# >>> 对这个数进行了某种不可描述的操作: 12
2、传入2个值,比较大小后输出最大的值(三元表达式)
max_1 = lambda a, b: a if a > b else b
print('输出最大的值:', max_1(1, 10))
# >>> 输出最大的值:10
3、输出列表元素是否大于 5(三元表达式)
count_5 = lambda a: True if len(a) > 5 else False
print('列表元素数量是否大于5:', count_5([1, 2, 3, 4, 5, 6]))
# ---> 列表元素数量是否大于5: True
4、参数带有默认值
sum_3 = lambda a, b=30: a + b
print('带有默认值:', sum_3(10))
print('修改默认值:', sum_3(10, b=1))
# >>> 带有默认值: 40
# >>> 修改默认值: 11
5、可以在匿名函数后直接加上值,这就可以在指定场景中使用
sum_2 = (lambda x, y: x + y)(3, 4)
print('在函数后添加值:3 + 4 =', sum_2)
# >>> 在函数后添加值:3 + 4 = 7
6、再来看看,函数跟匿名函数的区别
从图二中可以看出,两个方式定义的函数其实都差不多,但 lambda 是有局限性的,lambda 只能定义一下简单的逻辑,也无法在别的类中使用,但是在日常使用中,lambda主要是以参数的用法存在的,在对某个函数传入的参数进行简单的判断,用处也是很大的,而 def 的话就可以定义复杂的逻辑,复用性也很高。
总结
python 的匿名函数都是用lambda关键字来定义的,这样可以减少单行函数的存在,起到简化代码的作用,匿名函数一般不会被进行复用。由以上的示例可以看出匿名函数的使用可以使得在编写一些简单的逻辑函数时不需要进行def就可直接进行使用,匿名函数还可进行嵌套与装饰器一同使用。
其实python中的匿名函数 lambda 并不会为我们的程序带来效率的提高,匿名函数的初衷是为了使代码开启了更加整洁,易阅读,在lambda中定义函数时最好不要出现循环操作,最好 是使用def来定义函数比较稳妥,可增加程序复用性。