匿名函数

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)

results matching ""

    No results matching ""