匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序
1.匿名函数lambda要点
1. python用lambda表达式来构建匿名函数,所谓匿名没有def定义了。
2.lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去,比较简单。
3.语法格式:函数名=lambda arg1 ,arg2,.....argn:expression
2.lambda表达式的用法
1.写一个求两个数之和的lambda表达式
sum1 = lambda arg1, arg2: arg1 + arg2
p1 = lambda v1 ,v2 ,v3 :print(v1+v2+v3)
#调用sum函数
print(sum1(1,2))
p1("11","22","bb")
=============================
结果如下:
3
1122bb
2.lambda表达式只能封装一些简单的逻辑,不能封装一个代码块,否则报错
p2 = lambda a,b:( #报错,不能封装代码块,lambda表达式只能是一个,一个,一个。
print(a)
print(b)
3.上面的用法一般函数也可以实现,那为什么还要有lambda表示式呢?
3.1. 下面才是lambda真正的大用处,比如对字典类型进行排序
studentInfo = [
{"name":"tom", "age":18},
{"name":"sherry", "age":19},
{"name":"rose", "age":17},
{"name":"hellen","age":20},
{"name": "hero", "age": 15}
]
#1.给学生信息按姓名排序
#studentInfo.sort() #报错,字典无法直接排序
studentInfo.sort(key=lambda x:x["name"])
print(studentInfo)
'''结果如下:
[{'age': 20, 'name': 'hellen'}, {'age': 15, 'name': 'hero'},
{'age': 17, 'name': 'rose'}, {'age': 19, 'name': 'sherry'}, {'age': 18, 'name': 'tom'}]
'''
#2.给学生信息按年龄排序
studentInfo.sort(key=lambda x:x["age"])
print(studentInfo)
'''
[{'age': 15, 'name': 'hero'}, {'age': 17, 'name': 'rose'}, {'age': 18, 'name': 'tom'},
{'age': 19, 'name': 'sherry'}, {'age': 20, 'name': 'hellen'}]
'''
3.2.比如讲lambda表示式作为参数使用,动态计算
#3.匿名函数当成参数动态传入
def lambda_test(arg1,arg2,func): #定义一个函数,将另一个函数当如参数传给这个函数
result = func(arg1,arg2) #在函数内部调用传进来的函数
return result
#3.1调用lambda_test函数
a=lambda_test(3,8,lambda x,y:x+y)
print(a)
==========================================================
24
==========================================================
#3.2升级版调用lambda_test函数
fc=input("请输入匿名函数:")
#fc = eval(fc) #python3默认输出都是字符串,要想转换之前的样子,用eval.python2这里不需要
a=lambda_test(3,8,fc)
print(a)
==========================================================
请输入匿名函数:lambda x,y:x*y -10
14
统一声明:关于原创博客内容,可能会有部分内容参考自互联网,如有原创链接会声明引用;如找不到原创链接,在此声明如有侵权请联系删除哈。关于转载博客,如有原创链接会声明;如找不到原创链接,在此声明如有侵权请联系删除哈。