python - Lambda,调用自己进入lambda定义

标签 python functional-programming lambda

我正在用 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/

相关文章:

python - 使用 Numba 时如何并行化此 Python for 循环

python - 具有点绕行指针的 C 函数

scala - 相当于 F# 中的 Scala "case class"

c# - 与 C# 中的 Lambda/LINQ 表达式混淆的高级函数

python - 我怎样才能改变我的情节,使每张图都有不同的颜色?

python - 将矩阵与列向量进行比较

haskell - 将 "Why Functional Programming Matters"翻译成 Haskell

c++ - C++11 中可变参数模板的函数组合

Python:为什么需要通过 lambda 函数调用计时器函数?

java - 带有泛型 : JVM bug? 的 LambdaConversionException