私は、任意の数のラムダ関数を構成する関数を記述しようとしています。ラムダを構成するRecursionError
私は2つの簡単なラムダ関数を持っています。構成する機能で
f = lambda x: x + 1
g = lambda x: x**2
私の試みはこれです:
def compose(*functions):
composed = lambda x: x # Function that returns input
for function in reversed(functions):
composed = lambda x: function(composed(x))
return composed
私の思考composed
機能を作るたびに、その中に新しい機能が含まれ、機能の可変数をループしました。
は、その後、私は26ですが、代わりに、私が手
c = compose(f, g)
だからc(5)
を呼び出すとf(g(5))
を返す必要がありますf
の組成とg
、ある機能を作ることができ
RecursionError: maximum recursion depth exceeded
私は思いました中間変数を導入すると問題が解決する可能性があります。
def compose(*functions):
composed = lambda x: x # Function that returns input
for function in reversed(functions):
intermediate = lambda x: function(composed(x))
composed = intermediate
return composed
しかし、同じエラーが発生します。
これを修正する方法はありますか?
良い解決策が、 OPの試行でバグを見つけられますか? –
@ juanpa.arrivillagaそれを見て –
ええ、ちょうどそれが遅いバインディングのためだったと思った。 –