python - 如何在 Lambda 中阅读或解释 Lambda

标签 python lambda

我正在尝试理解嵌套的 lambda:

f = lambda x, y: y(y(x))
g = lambda x : lambda y: x(y)
print( f(lambda x: x+1, g) (4) )

有人告诉我这段代码打印了“5”。这是如何解释的,应该如何解析最后一行中的 (4)

根据我对lambda的理解,如果,

h = lambda a, b : a+b

我知道 print(h(1,2)) 会给出 3 a = 1, b =2, a+b = 1+2 =3

最佳答案

f(lambda x: x+1, g) 最终返回另一个函数。 然后以 4 作为参数调用该 函数以生成最终结果 5。


h = lambda x: x + 1,因为否则跟踪会变得一团糟。

首先,我们将f应用于hg

f(h, g)(4) == (lambda x,y: y(y(x))(h, g)(4)
           == g(g(h))(4)

接下来,我们将评估对 g 的内部调用:

g(g(h))(4) == g((lambda x: lambda y: x(y))(h))(4)
           == g(lambda y: h(y))(4)
           == g(h)(4)

最后一步是 eta 缩减的示例,使用 lambda 演算中的术语:将第二个函数应用于参数的函数等效于第二个函数本身。

最后,我们以相同的方式再次计算 g(h),这最终让我们得到一个不涉及将函数作为参数传递的表达式,并让我们得到最终答案。

g(h)(4) == (lambda y: h(y))(4)
        == h(4)
        == (lambda x: x + 1)(4)
        == 4 + 1
        == 5

关于python - 如何在 Lambda 中阅读或解释 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52595975/

相关文章:

java - 如何在 IntelliJ IDEA 中自动完成 lambda?

android - Android 中模拟 kotlin 函数作为参数

c# - 如何在 LINQ select 语句中使用 Lambda

javascript - 如何使用 Sinon stub "wrapper"函数?

python 相关单词搜索并替换为列表单词

python - 装饰方法 : AttributeError: 'function' object has no attribute '__self__' ?

python - 在python中从n个csv文件创建excel文件

python - 多处理模块映射方法中的赋值(Python)

python - 如何从日期时间对象中仅提取月份和日期?

c# - 过度使用委托(delegate)对性能来说是个坏主意吗?