您可以使用Python封锁和function currying technique做到这一点,像这样
def adder(x, y, z):
return x + y + z
def wrapper_g(y, z):
def g(f, x, y = y, z = z):
return f(x, y, z) # By closure property, `f` accesses `y` and `z`
return g
g = wrapper_g(5, 10) # We are creating `g` with default parameters 5 and 10
print g(adder, 20) # along with the third parameter 20, adder is called.
print g(adder, 40) # along with the third parameter 40, adder is called.
print g(multiplier, 2) # We can pass any function, which can act on 2 params.
print g(multiplier, 2, y = 3, z = 4) # We can dynamically alter the default param
输出
35
55
100
24
优点:
我们可以动态d ecide要调用哪个函数
我们甚至可以在调用时更改默认参数。
G应该使用F的输出还是它自己执行F?这听起来像你要求的是'currying':http://mtomassoli.wordpress.com/2012/03/18/currying-in-python/ –