匿名函数
- 一次性的函数没有名字
- 一般把他当做一个参数传给另一个函数
- lamda x,y:x/y #语法:lambda 参数 : 表达式
def sub_func(a,b,func)
print('a=',a)
print('b=',b)
print('a-b=',func(a,b))
sub_func(100,1,lambda a,b:a-b)
运行结果:
a=100
b=1
a-b=99
上面的代码中,sub_func 中需要传入一个函数,然后这个函数在sub_func里执行, 请注意这个匿名函数也需要传入两个参数
匿名函数与Python内置函数的配合使用
member_list = [
{"name": "风清扬", "age": 99, "power": 10000},
{"name": "无崖子", "age": 89, "power": 9000},
{"name": "王重阳", "age": 120, "power": 8000}
]
new_list=sorted(member_list,key=lambda dict_:dict_['power'])
print(new_list)
**sorted语法**
第一个参数为可迭代对象
key 是用来比较的元素
number_list = [100, 77, 69, 31, 44, 56]
num_sum = list(map(lambda x: {str(x): x}, number_list))
print(num_sum)
map函数是Python中来做映射的一个内置函数 接收两个函数第一个参数是一个函数,第二个参数是可迭代对象 map会遍历可迭代对象的值.然后依次将值传递给函数执行,我们使用匿名函数lambda 来实现map中单函数参数
匿名函数作为函数的返回值
def run_func(a, b):
return lambda c: a + b + c
return_func = run_func(1, 10000)
print(return_func)
print(return_func(100))
注意 其中的a,b两个参数是run_func中的参数,但我们执行返回的函数return_func时,已经不在run_func的作用域内了,而lambda函数仍然能使用a,b参数。说明lambda函数会将它的运行环境保存一份,一直保留到它自己执行的时候使用。