传递函数+相应的参数,作为参数传递给另一个函数,而传递函数的参数数量各不相同



我正在将一个函数(及其相应的参数(作为参数传递给另一个函数。

问题是,当每个传递的函数所需的参数数量发生变化时,我不知道如何处理。

这很难解释,所以这里有一个例子

def method1(a): #Not an option to change
return a
def method2(a1, a2): #Not an option to change
return a1 + ' ' + a2
def method3(methodToRun, params):
result = methodToRun(params[0], params[1])
return result
method3(methodToRun = method2, params = ['hello world', 'bye world'] )

method3 可以接受一个函数,以及函数的相应参数,这些参数会有所不同。例如,方法 1 将只接受一个参数,但方法 2 将接受两个参数。

我不知道如何设置 method3,以便它可以在提供参数的同时处理执行 method1 或 method2。它目前仅设置为采用方法 2,而不是方法 1。

重写方法1和方法2不是一个选项,因为就我而言,这些方法属于我无法更改的库。

您可以使用关键字参数。例如:

def method3(methodToRun, *args):
result = methodToRun(*args)
return result

然后你可以称method3为波纹管:

method3(method2, 'hello world', 'bye world')
method3(method1, 'hello world')

最新更新