我有一个闭包,它接受一些状态变量并返回一个函数。
def function(state1,state2):
def closure(variable):
return state1*variable - state2*variable
return closure
所以现在如果我想使用它,我只是这样做:
a = function(1,2)
a(10,20,30)
但现在我想做一些稍微不同的事情,以便从闭包函数中减去一个常量值,例如。
a(10,20,30) - a(100)
我真正想做的是创建一个新功能:
def function2(subtract_value):
return a - a(subtract_value)
但是python不允许我从函数对象中减去一个浮点数。
有没有人知道如何在不将subtract_value选项手动添加到函数1的情况下执行此操作?
答案 0 :(得分:1)
您可以创建一个包含闭包函数的新函数。
def make_subtract(fn, val):
def wrapper(x):
return fn(x) - val
return wrapper
然后这样称呼:
new_a = make_subtract(a, a(100))