匿名函数
lambda 函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方.这种函数得名于省略了用def声明函数的标准步骤。
优点
匿名函数优点:
- 使用Python写一些脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
fn1 = lambda x:x[1]
def fn2(x):
return x[1]
- 对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题
- 使用lambda在某些时候然后代码更容易理解
基本格式
变量名 = lambda [arg1 [,arg2,.....argn]]:expression
由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收
注意:不需要return
练习
#!/usr/bin/env python
# -*- coding:utf-8 -*-
sum = lambda arg1, arg2: arg1 + arg2
print(sum(10, 20))
补充
Lambda函数能接收任何数量的参数但只能返回一个表达式的值
匿名函数不能直接调用print,因为lambda需要一个表达式
应用场合
函数作为参数传递
#!/usr/bin/env python
# -*- coding:utf-8 -*-
def calculate(a, b, method):
print("收到的数字为", a, b)
return method(a, b)
print(calculate(10, 20, lambda a,b:a+b))
排序
#!/usr/bin/env python
# -*- coding:utf-8 -*-
stus = [
{"name": "zhangsan", "age": 18},
{"name": "lisi", "age": 19},
{"name": "wangwu", "age": 17}
]
stus.sort(key=lambda x: x['age'], reverse=True)
print(stus)