python之匿名函数lambda

时间:2021-11-03 02:39:23

lambda parameter:expression

其中lambda是声明一个匿名函数,parameter是这个函数有参数,可以有多少,中间用逗号隔开,expression是正则表达式

def compute(a,b,func):
    result = func(a,b)
    return result
num = compute(11,12,lambda x,y:x+y)
print(num)

方法compute有三个参数,从封装的代码中可以看到,compute把第三个参数用函数传入,再看代码的第四行,表达式是x+y,所以func参数的内容就是x+y,且需要传入两个参数分别为x,y,再看看第二行代码中传入两个参数是a,b,那么result = a + b,因为a = 11,b = 12,所以result等于23,所以num等于23,打印结果也就是23

下面做一下延伸:

def compute(a,b,func):    result = func(a,b)    return resultfunc_new = input("请输入一个匿名函数:")num = compute(11,12,func_new)print(num)

上面的代码就是说让我们输入一个函数,这样的话,你想让它实现加法,它就加法。想让它实现减法就实现减法。

不过它只能在2.7版本才可以用上面的代码,3.6的话就不行,因为input会把你输入的值都变成客串,也就是"lambda x,y:x+y",你让一个字符串去实现这个,不是搞笑吗?这时候我们就可以用到eval函数,这个函数很强大。它可以去除这字符串,让它变成一个可以被调用的函数,如下代码

def compute(a,b,func):    result = func(a,b)    return resultfunc_new = input("请输入一个匿名函数:")func_new = eval(func_new)num = compute(11,12,func_new)print(num)


本文出自 “爱周瑜” 博客,请务必保留此出处http://izhouyu.blog.51cto.com/10318932/1967315