2011-09-11 12 views
1

は基本的にこのPythonで関数ツリーを動的に生成する。私がやりたい

def mult(x, y): 
    return x * y 

def add(x, y): 
    return x + y 

treeFunction = mult(2, add(x, y)) 

#outputs 10 (2 * (2 + 3)) 
print treeFunction(2, 3) 

のようなもので、いくつかの値を乗じて追加()の戻り値を変更するには、実行時に方法があります。

答えて

7

私は何を求めていることはラムダ関数だと思う

treeFunction = lambda x,y: mult(2, add(x, y)) 

それからちょうどとしてそれを使用します。

treeFunction(2, 3) 

EDIT

約読み取りを持っていますclosures in python。間違いなくあなたの時間を学ぶ価値があります。

+0

これを行うには複雑で一般的な方法がいくつかありますが、この特定の例では最も簡単な解決法はラムダ関数です。 –

+0

この質問を解釈するもう1つの方法は、ドメイン固有の言語のための通訳を求めることでした。このコードは書くのが簡単でした。 –

+0

'def treeFunction(x、y):return mult(2、add(x、y))'を書くのは難しいですか?ラムダに名前を付けることは間違っている – JBernardo

関連する問題