匿名函数
1. 介绍:所谓匿名函数,就是没有名字的函数 ; 使用lambda关键字创建匿名函数。
2. 语法格式 : lambda 参数列表 : 表达式
3.注意:
- 匿名函数冒号后面的表达式有且只能有一个
- 匿名函数自带return,而return的结果就是表达式的计算后的结果
- 匿名函数 的函数内容只能写一行表达式
下面两个相同的函数,上边是普通函数,下面是匿名函数.
def sum(a, b):
return a + b
print(sum(1, 2)) #结果是 3
---------------------------------------------------------
# lambda 参数1,参数2... : 函数内容
func = lambda a, b: a + b
# 调用func函数,传参a=1,b=2 运算结果自动返回
result = func(1, 2)
print(result) #结果是 3
为了方便理解,这有个小练习:
把lambda传给calculate的第三个参数,然后第三个参数按照匿名函数的内容计算 …
# 创建一个简单的加法运算的函数calulate
def calculate(a, b, func):
result = func(a, b, 100)
return result
# 调用calulate函数,传入参数a:20 ,b:2 ,func:lambda x, y, z: x + y + z
result = calculate(20, 2, lambda x, y, z: x + y + z)
#这时函数内部就是:result = lambda x,y,z : 20 + 2 + 100 (x,y,z只是形参)
print(result)
# 结果就是: 122
result = calculate(20, 2, lambda x, y, z: x + y / z)
print(result)
# 结果是 20.02
再来个匿名函数的小练习 , 利用匿名函数和sort 排序:
# 需求 按年龄排序
list01 = [
{'name': 'mayun', 'age': 2},
{'name': 'sabeining', 'age': 4},
{'name': 'kobi', 'age': 3},
{'name': 'bob', 'age': 1}
]
#
def test(x):
return x['age']
# 首先sort函数会遍历里list01里面的每个值(就是每个字典),
# 其次根据key的值进行排序,现在key取的是每个age对应的数值
list01.sort(key=lambda hehe: hehe['age'])
print(list01)
# [{'name': 'bob', 'age': 1}, {'name': 'mayun', 'age': 2}, {'name': 'kobi', 'age': 3}, {'name': 'sabeining', 'age': 4}]