def compose(f, g):
return lambda x:f(g(x))
def thrice(f):
return compose(f, compose(f, f))
add1 = lambda x: x + 1
print(thrice(thrice)(add1)(6)) = 33
任何人都可以向我解释为什么这是33? 我应该开始阅读复合函数的哪一边?
答案 0 :(得分:1)
1)在数学方面,compose(f, g) = f ∘ g
2)然后thrice(f) = f ∘ f ∘ f
。
3)然后T := thrice(thrice) = thrice ∘ thrice ∘ thrice
4)然后T(f) = f ∘ f ∘ f ∘ f ∘ f ∘ ...
#27次
5)然后thrice(thrice)(add1) = T(add1) = add1 ∘ add1 ∘ ...
#27次
6)然后thrice(thrice(add1))(x) = x + 27
答案 1 :(得分:0)
第一次调用三次(三次)重新启动一个函数。对于该函数,您传递add1函数,因此您将再次获得一个函数。如果你将6传递给该函数,你将得到33作为结果。
f1 = thrice(thrice)
f2 = f1(add1)
print(f2(6))