python中lambda x:lambda :x**2作何理解?

如题所述

我也遇到这个问题,仔细研究了一下,现在说一下。
这是一个lambda表达式,返回值是一个lambda函数。你应该这么读:
lambda x: (lambda: x**2),
这是两个lambda函数嵌套,第一个lambda输入x,返回lambda: x**2,
第二个lambda没有输入,返回x**2,其中返回式的x是源自于第二个lambda表达式的闭包(可以理解为第一个lambda表达式的函数空间)。
如果写成函数式的方法,可能更好理解。
def lambda1(x):
def lambda2():
return x**2
return lambda2
这种嵌套的函数常用于装饰器,或者函数式编程。我遇到的情况是为了保存闭包。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-07-25
lambda 创建一个匿名函数。冒号前面是传入参数,后面是一个处理传入参数的单行表达式。
调用lambda函数返回表达式的结果。
list的sort 同于内建函数sorted。它有三个参数cmp,key,reverse,均有默认值。
cmp是一个比较器,自定义比较器的话传入两个参数x,y,返回值限制为1(x>y), 0(x=y), -1(x<y)。默认是常规比较,数字比较,字符串比较等等。
key是对序列元素处理(比如问题中序列元素仍是序列,就可以再对序列取索引值),也就是sort的比较器实际接收到值是key处理后的结果(问题中实际参与比较的是1,2,3,4)。
reverse默认是False,意思是从小到大排序,传入True,就从大到小排。本回答被提问者和网友采纳
相似回答