python - 匿名函数及其应用

时间:2021-07-21 19:12:32

python - 匿名函数及其应用

lambda关键词能创建⼩型匿名函数。这种函数得名于省略了def声明函
数的标准步骤。
代码如下:

#定义lambda函数
sum = lambda arg1,arg2:arg1+arg2
#调用函数
totle = sum(3,5)
print ('totle = %d'%totle)

运行如下

totle = 8

Lambda函数能接收任何数量的参数但只能返回一个表达式的值
匿名函数不能直接调用print,因为lambda需要一个表达式.

应用场景:函数作为参数传递

1,自定义函数

#定义函数
def myFunc(num1,num2,option):
print('num1 = %d'%num1)
print('num2 = %d'%num2)
print('num1 + num2 = %d'%option(num1,num2))
#调用函数
myFunc(3,5,lambda x,y:x+y)

运行如下:

num1 = 3
num2 = 5
num1 + num2 = 8

2.作为内置函数的参数

#coding=utf-8
#定义一个列表,列表中的元素是字典
stus = [{'name':'xiaoming','age':18},
{'name':'xiaohong','age':19},
{'name':'xiaoxue','age':17}]
#实现列表中的元素按name排序
stus.sort(key = lambda x:x['name'])
print('列表中的元素按name排序:', stus)
#实现列表中的元素按age排序
stus.sort(key = lambda x:x['age'])
print('列表中的元素按age排序:', stus)

运行结果如下:

列表中的元素按name排序: 
[{'name': 'xiaohong', 'age': 19},
{'name': 'xiaoming', 'age': 18},
{'name': 'xiaoxue', 'age': 17}]
列表中的元素按age排序:
[{'name': 'xiaoxue', 'age': 17},
{'name': 'xiaoming', 'age': 18},
{'name': 'xiaohong', 'age': 19}]