在Python中动态生成函数树.

Joh*_*ohn 1 python metaprogramming python-2.7

我想做的就是这样

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)
Run Code Online (Sandbox Code Playgroud)

基本上,在运行时有没有办法通过将add()的值乘以某个值来改变它的返回值.

Chr*_*rle 7

认为你要的是一个lambda函数:

treeFunction = lambda x,y: mult(2, add(x, y))
Run Code Online (Sandbox Code Playgroud)

然后将其用作:

treeFunction(2, 3)
Run Code Online (Sandbox Code Playgroud)

编辑

读一下python中的闭包.绝对值得你花时间学习.