看到lambda关键字,你就是遇到python 匿名函数了哦。
不太清楚python 函数的定义语法的请移步:python 函数定义与调用。
匿名函数,指的就是没有名称的函数,也不需要def语句定义。如果要声明匿名函数,就要用lambda关键字,语法如下:
lambda [arg1 [,arg2,...argn]]:expression参数介绍
[arg1 [,arg2,...argn]] --- 表示的是函数的参数,数量不限
expression --- 表示的是函数的表达式
返回值
只能返回一个表达式的值
注意:匿名函数不能直接print(),因为lambda需要一个表达式。
先看一个简单的例子
sum = lambda arg1,arg2:arg1+arg2 print("运行结果:",sum(1,2)) #调用 print("运行结果:",sum(10,20))
运行结果
运行结果: 3 运行结果: 301、匿名参数作为参数传递。举例
def fun(a,b,opt): print("a=",a) print("b=",b) print("res=",opt(a,b)) fun(11,12,lambda x,y:x*y) #opt函数为相乘 fun(8,10,lambda x,y:x-y) #opt函数为相减
运行结果
a= 11 b= 12 res= 132 a= 8 b= 10 res= -2
2、匿名函数作为内置函数的参数来使用。举例
students = [{"name":"zhangsan","age":18}, {"name":"lisi","age":19}, {"name":"wangwu","age":20} ] students.sort(key = lambda x:x['name']) #按name排序 print("按name排序结果为:",students) students.sort(key = lambda x:x['age']) #按age排序 print("按age排序结果为:",students)运行结果
按name排序结果为: [{'name': 'lisi', 'age': 19}, {'name': 'wangwu', 'age': 20}, {'name': 'zhangsan', 'age': 18}] 按age排序结果为: [{'name': 'zhangsan', 'age': 18}, {'name': 'lisi', 'age': 19}, {'name': 'wangwu', 'age': 20}]注意:与def相比,lambda 创建的函教有很多不同的地方。(1) def创建的函数是有名称的,而lamboda没有函数名称,这是最明显的区别之一。
(2) lambda 返回的结果通常是一个对象或者一个表达式,它不会将结果赋给一个变量,而def则可以。
(3) lambda只是一个表达式,函数体比def简单很多,而def是一个语句。
(4) lambda表达式的冒号后面只能有一个表达式,def则可以有多个。
(5)像if或for等语句不能用于 lambda中,def则可以。
(6 ) lambda一般用来定义简单的函数。而def可以定义复杂的函数
(7) lambda函数不能共享给别的程序调用,def可以。
笔试题里结合lambda表达式使用:
a = map(lambda x:x**3,[1,2,3])输出
