最近刚实际使用lambda,觉得很清晰好用,做个记录。
什么是lambda ?
我的理解是一个定义匿名函数的方式,可以获得一个“非常规定义”的函数。一般定义函数,都需要def name 然后定义函数主体。而使用lambda就可以直接只写参数和主体,只用一行解决,这对于一些简短的函数或者仅单处调用的函数来说是非常棒的,可以让代码更简洁一些
1、代替简单的函数定义
比如我们需要实现一个函数,返回x+y的值,常规定义函数如下
def getPlusResult(x, y):
return x+y
使用lambda定义
a = lambda x, y : x+y
对于lambda来说,冒号左侧是参数,右侧是函数主体,也即匿名函数实际返回的值
2、还有一个用法是用来传递参数,控制分支,其实也算是1的一个变种
def SetFuctionName(type):
if type == 1:
do something
elif type == 2:
do something else
a = lambda : SetFunctionName(1)
b = lambda : SetFunctionName(2)
这种用法的话要看具体的情况。我自己是在信号绑定的时候用到的。处理函数相同,但不同的入口有参数差别,需要在发射信号的时候传不同的参数,而qt的信号绑定又需要绑定一个函数,因此就用了匿名函数
网友评论