python将向量输入函数转换为多输入

python将向量输入函数转换为多输入,python,wrapper,Python,Wrapper,我有一个接受向量输入的函数,例如 f(x) = x[0]*x[1] 我想要一个接受此函数并创建新函数的函数: g(x,y) = x*y fcn_translator(f) # intelligent code here return g 有人知道怎么做吗?这件事以前做过吗。这个问题的原因是我有一个python包,它优化了形式为f(x,y…)的函数,但我调用的函数作用于向量 看起来您需要一个函数,它接受两个参数,将它们组合成一个向量,并调用f: def g1(x, y):

我有一个接受向量输入的函数,例如

f(x) = x[0]*x[1]
我想要一个接受此函数并创建新函数的函数:

g(x,y) = x*y

fcn_translator(f)
    # intelligent code here
    return g

有人知道怎么做吗?这件事以前做过吗。这个问题的原因是我有一个python包,它优化了形式为f(x,y…)的函数,但我调用的函数作用于向量

看起来您需要一个函数,它接受两个参数,将它们组合成一个向量,并调用
f

def g1(x, y):
    return f([x, y])
def g2(*x):
    return f(x)
作为一种更通用的解决方案,函数
g2
接受任意数量的参数,将它们组合成一个向量,并调用
f

def g1(x, y):
    return f([x, y])
def g2(*x):
    return f(x)
最后,由于向量的前两个元素是
f
所必需的,因此该函数至少需要两个参数:

def g3(x, y, *rest):
    return f((x, y) + rest)

您可以使用类似
f(*vector)
的向量调用形式为
f(x,y,…)
的函数,这有什么帮助?我没有f(x,y,…),我有f(向量),你认为
f
如何应用于
g
g(x,y)
应该执行
f(x)*f(y)
或其他操作?谢谢你的帮助。有没有办法自动生成像g3这样的函数?例如,给定f(x)的定义,是否有创建g3(x1,x2,…)的代码?您可以使用
exec(''def f_new(x,y):返回f([x,y])'')
创建新函数,但强烈反对使用
exec