Python中匿名函数lambda的使用

匿名函数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

猜你喜欢

转载自blog.csdn.net/qq_26442553/article/details/81586258