1.4. 匿名函数
用lambda能创建小型匿名函数,这种函数得名于省略了用def声明函数的标准步骤
lambda函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
如下实例:
In [4]: sum=lambda a,b:a+b
In [5]: print("10+20=",sum(10,20))
10+20= 30
注意:
Lambda函数能接收任意数量的参数,但只能返回一个表达式的值
Lambda函数不能直接调用print,因为lambda需要一个表达式
应用
函数作为参数传递
1 def fun(a,b,opt):
2 print("a:",a)
3 print("b:",b)
4 print("opt(a,b):",opt(a,b))
5
6 fun(1,2,lambda x,y:x+y)
结果是:
a: 1
b: 2
opt(a,b): 3
python2(输入的就当做代码执行) 动态输入函数执行
1 #-*-coding=utf-8-*-
2
3 def fun(a,b,func):
4 print("func(a,b):",func(a,b))
5
6 func_new=input("input:")
7 fun(3,5,func_new)
结果是:
input:lambda x,y:x*y
('func(a,b):', 15)
python3(输入的就不当做代码,而是字符串) 动态输入函数执行
1 #-*-coding=utf-8-*-
2
3 def fun(a,b,func):
4 print("func(a,b):",func(a,b))
5
6 func_new=input("input:")
7 func_new=eval(func_new)#去掉字符串外面的双引号
8 fun(3,5,func_new)
排序
列表里面含有字典的时候,进行排序:
stus = [
{"name":"zhangsan", "age":18},
{"name":"lisi", "age":19},
{"name":"wangwu", "age":17}
]
stus.sort(key = lambda x:x['name'])
print(stus)
结果是:
[{'age': 19, 'name': 'lisi'}, {'age': 17, 'name': 'wangwu'}, {'age': 18, 'name': 'zhangsan'}]