使用 python 装饰器缩放翻译功能
scale translate function with python decorator
我在 python 中有一个单参数函数列表,我想对其应用相同的 scaling/translation 操作。
函数 f(x) 的 scale/translation 如下所示:
f'(x, a, b, c, d) = a + b* f( c*(x - d) )
例如,如果我的原始函数定义为:
f(x) = 3*x
我想修改为:
f'(x, a, b, c, d) = a + b * (3*(c*(x - d)))
理想情况下使用装饰器(或我可以应用于列表中每个函数的其他一些可重用操作)。
是否有一种 pythonic 方法可以实现这一点,这样就不需要为我拥有的每个函数都对每个转换进行硬编码?
如果问题不清楚,我们深表歉意 - 在此先感谢您的任何建议。
def f(x):
return 3*x
def makeFPrime(func):
def inner(x, a, b, c, d):
return a + b * (3*(c*func(x-d)))
return inner
例如:
f2 = makeFPrime(f)
f2(2,1,1,1,2)
1
f2(2,1,1,1,0)
19
或者,使用 makeFPrime
作为装饰器:
def makeFPrime(func):
def inner(x, a, b, c, d):
return a + b * (3*(c*func(x-d)))
return inner
@makeFPrime
def f(x):
return 3*x
然后 f(2,1,1,1,2) returns 1
我在 python 中有一个单参数函数列表,我想对其应用相同的 scaling/translation 操作。
函数 f(x) 的 scale/translation 如下所示:
f'(x, a, b, c, d) = a + b* f( c*(x - d) )
例如,如果我的原始函数定义为:
f(x) = 3*x
我想修改为:
f'(x, a, b, c, d) = a + b * (3*(c*(x - d)))
理想情况下使用装饰器(或我可以应用于列表中每个函数的其他一些可重用操作)。
是否有一种 pythonic 方法可以实现这一点,这样就不需要为我拥有的每个函数都对每个转换进行硬编码?
如果问题不清楚,我们深表歉意 - 在此先感谢您的任何建议。
def f(x):
return 3*x
def makeFPrime(func):
def inner(x, a, b, c, d):
return a + b * (3*(c*func(x-d)))
return inner
例如:
f2 = makeFPrime(f)
f2(2,1,1,1,2)
1
f2(2,1,1,1,0)
19
或者,使用 makeFPrime
作为装饰器:
def makeFPrime(func):
def inner(x, a, b, c, d):
return a + b * (3*(c*func(x-d)))
return inner
@makeFPrime
def f(x):
return 3*x
然后 f(2,1,1,1,2) returns 1