来源:python中国网 时间:2019-09-15

  用lambda关键字能创建匿名函数。这种函数省略了用def声明函数的标准步骤。

  lambda函数的语法只包含一个语句,如下:

	  lambda [arg1 [,arg2,.....argn]]:expression

# -*- coding: utf-8 -*-

sum = lambda arg1, arg2: arg1 + arg2

print(sum(1,2))
print(sum(10,20))
D:python3installpython.exe D:/pyscript/py3script/python66/python66.py
3
30

Process finished with exit code 0


  1、Lambda函数能接收任何数量的参数但只能返回一个表达式的值。

  2、匿名函数不能直接调用print,因为lambda需要一个表达式。

  3、Python要求 lambda 表达式只能是单行表达式。

  应用:函数作为参数传递

  1、作为自定义函数的参数

# -*- coding: utf-8 -*-


def fun(m, n, my_fun):
    return my_fun(m,n)


res = fun(1,2,lambda x,y:x+y)
print(res)

res = fun(10,20,lambda x,y:x+y)
print(res)
D:python3installpython.exe D:/pyscript/py3script/python66/python66.py
3
30

Process finished with exit code 0


  2、作为内置函数的参数(参考 sort函数和sorted函数)

# -*- coding: utf-8 -*-

stu = [
    {"name":"a1", "age":18},
    {"name":"b1", "age":19},
    {"name":"c1", "age":17}
]

# 按照name排序
stu.sort(key = lambda x:x['name'])
print(stu)

# 按照age排序
stu.sort(key = lambda x:x['age'])
print(stu)
D:python3installpython.exe D:/pyscript/py3script/python66/python66.py
[{'name': 'a1', 'age': 18}, {'name': 'b1', 'age': 19}, {'name': 'c1', 'age': 17}]
[{'name': 'c1', 'age': 17}, {'name': 'a1', 'age': 18}, {'name': 'b1', 'age': 19}]

Process finished with exit code 0