【发布时间】:2021-09-23 12:33:47
【问题描述】:
我目前正在尝试解释代码,但即使我使用 python 导师,我似乎也无法将其可视化。
def two(f):
return lambda x: f(f(x))
def three(f):
return lambda x: f(f(f(x)))
print(three(two(lambda x: x+5))(2))
print(three(two)(lambda x: x+5)(2))
对于第一个打印输出,我是这样解释的:
two(two(two(x+5))) = (x + 5 + 5) + (5 + 5) + (5 + 5) = 32
我的解释正确吗?
另外,我真的不知道如何解释第二个打印输出。
【问题讨论】:
-
这可能有助于使用更多的临时变量来保存
three(two)之类的结果,并使用def语句而不是 lambda 表达式来重写代码以将函数绑定到名称。在您习惯这种函数式方法之前,大型嵌套表达式可能会让人有点不知所措。
标签: python higher-order-functions