使用 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