lambda在python中返回lambda

HEX*_*ler 10 python anonymous function

很少我会在python中遇到一些使用匿名函数返回匿名函数的代码......?

不幸的是我手头上找不到一个例子,但它通常采用这样的形式:

g = lambda x,c: x**c lambda c: c+1
Run Code Online (Sandbox Code Playgroud)

为什么有人会这样做?也许你可以给出一个有意义的例子(我不确定我制作的那个是否有意义).

编辑:这是一个例子:

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])))()
Run Code Online (Sandbox Code Playgroud)

Gre*_*ill 16

您可以使用这样的构造进行currying:

curry = lambda f, a: lambda x: f(a, x)
Run Code Online (Sandbox Code Playgroud)

您可以使用它:

>>> add = lambda x, y: x + y
>>> add5 = curry(add, 5)
>>> add5(3)
8
Run Code Online (Sandbox Code Playgroud)