我正在用 Python 做一个复杂的 hack,当你混合使用 for+lambda+*args 时,这是一个问题(不要在家里 child 这样做),无聊的细节可以省略,我找到的解决问题的独特解决方案问题是以这种方式将 lambda 对象传递给 self lambda:
for ...
lambda x=x, *y: foo(x, y, <selflambda>)
这可能吗?非常感谢。
最佳答案
您正在寻找 fixed-point combinator ,就像 Z 组合器一样,维基百科为此提供了这个 Python 实现:
Z = lambda f: (lambda x: f(lambda *args: x(x)(*args)))(lambda x: f(lambda *args: x(x)(*args)))
Z 接受一个参数,一个描述您想要的函数的函数,然后构建并返回该函数。
您要构建的函数是:
Z(lambda f: lambda x=x, *y: foo(x, y, f))
关于python - Lambda,调用自己进入lambda定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2023992/