我正在将一个函数(及其相应的参数(作为参数传递给另一个函数。
问题是,当每个传递的函数所需的参数数量发生变化时,我不知道如何处理。
这很难解释,所以这里有一个例子
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')