可能的重复:
功能制作
>>> g=lambda x:x+1
>>> composition=lambda f,g:(lambda x:f(g(x)))
>>> f=g
>>> f=composition(f,g)
>>> f(9)
11
>>> f=composition(f,g)
>>> f=composition(f,g)
>>> f=composition(f,g)
>>> f(9)
14
我没有使用函数 composition(f,g) ,而是执行了以下操作
>>> f=g
>>> f=lambda x:f(g(x))
>>> f(8)
RuntimeError: maximum recursion depth exceeded
我只是打算用相应的 lambda 表达式替换函数组合。我对为什么 f=composition(f,g) 不产生递归但 f=lambda x:f(g(x)) 产生递归感到困惑。