版权声明:转载请注明出处及作者! https://blog.csdn.net/chenzhanhai/article/details/6033931
lambda函数定义
lambda函数也叫匿名函数,和普通的函数相比,就是省去了函数名称而已,使用lambda可以省去定义函数的过程,让代码更加精简,lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。
lambda argument_list: expression
lambda使用场景
1.将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数,示例如下。
add = lambda x, y: x+y
print(add(5, 10))
示例的打印结果为8。
2.将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换,一般可以用在测试用例中,可以在测试用例中用于Mock从而改变原函数的结果。
import datetime
import time
time.sleep = lambda x:None
print(datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))
time.sleep(3)
print(datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))
示例打印结果如下:
3.将lambda函数作为参数传递给其他函数,如filter或map等,这些为Python内置函数,函数定义如下。
filter(function, iterable)
map(function, iterable)
filter和map均返回的是迭代器,需要转换为list才能正常打印出数值。
lambda函数使用示例如下:
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
print(list(filter(lambda x: x % 3 == 0, foo)))
print(list(map(lambda x: x * 2 + 1, foo)))
示例运行结果如下:
4.将lambda函数作为其他函数的返回值,返回给调用者。
def agent_operate(type):
if type == "add":
return lambda x,y: x + y
if type == "minus":
return lambda x,y: x - y
return None
print(agent_operate("add")(3, 5))
print(agent_operate("a"))
示例运行结果如下:
如果您喜欢这篇文章,请别忘了点赞和评论哦!