【发布时间】:2010-12-06 00:09:01
【问题描述】:
我很少会在 python 中遇到一些使用匿名函数返回匿名函数的代码...?
很遗憾,我手头上找不到示例,但它通常采用如下形式:
g = lambda x,c: x**c lambda c: c+1
为什么有人会这样做?也许你可以举一个有意义的例子(我不确定我做的那个有什么意义)。
编辑:这是一个例子:
swap = lambda a,x,y:(lambda f=a.__setitem__:(f(x,(a[x],a[y])),
f(y,a[x][0]),f(x,a[x][1])))()
【问题讨论】:
-
找到并展示一个真实的例子;那个语法不正确。
-
产生 SyntaxError: invalid syntax。没有意义的第二个 lambda
-
为什么有人会这样做?答:激怒别人?
-
另外,交换列表的两个元素的更清晰的方法是使用元组解包:x[1], x[2] = x[2], x[1]
-
一般来说:lambdas 应该用于简单的表达式。很有可能,返回任何返回 lambda 的东西并不简单。