Python 是否可以编写一个接受两个函数的函数+;他们各自的论点是什么?

Python 是否可以编写一个接受两个函数的函数+;他们各自的论点是什么?,python,Python,假设我有一个方法: def A(...) 这需要传递给它多个方法(B,C),每个方法都接受未知数量的参数。如果有帮助,可以知道可能的参数变量名 是否有其他方法可以传递这些参数(可能通过两个列表?检查以下内容: def func1(arg1, arg2): print("I am func1: arg1 is {} and arg2 is {}".format(arg1, arg2)) def func2(arg1, arg2, arg3): print("I am func

假设我有一个方法:

def A(...)
这需要传递给它多个方法(B,C),每个方法都接受未知数量的参数。如果有帮助,可以知道可能的参数变量名

是否有其他方法可以传递这些参数(可能通过两个列表?

检查以下内容:

def func1(arg1, arg2):
    print("I am func1: arg1 is {} and arg2 is {}".format(arg1, arg2))


def func2(arg1, arg2, arg3):
    print("I am func2: arg1 is {} and arg2 is {} and arg3 is {}".format(arg1, arg2, arg3))


def majorfunc(f1, args1, f2, args2):
    print("I am majorfunc. I call all the funcs")
    print("Now, I am calling f1")
    f1(*args1)
    print("Now, I am calling f2")
    f2(*args2)


def main():
    f1 = func1
    args1 = (1, 2)

    f2 = func2
    args2 = ('a', 'b', 'c')

    majorfunc(f1, args1, f2, args2)

是的,您可以按照您的建议进行操作,并将参数作为两个单独的列表传递:

def A(B, B_args, C, C_args):
    B(*B_args) # Use function B
    C(*C_args) # Use function C
这将完成任务,但有一点有点难看,那就是它会阻止使用带有
B
C
的关键字参数,这有时是为了清晰起见。为每个函数添加单独的args和kwargs参数似乎也很笨拙

对于更一般的方法,我建议将参数绑定到
a
主体之外的函数,这将以一种简单的方式为您提供Python函数调用机制的全部功能:

import functools

def A(B, C):
    B() # Use function B
    C() # Use function C

# Call A while mix-and-matching positional and keyword args
A(functools.partial(B, 1, 2, 3), functools.partial(C, foo=bar))

到目前为止您尝试了什么?
def(f1,dict1,f2,dict2):f1(**dict1);f2(**dict2)
目前,这更像是一个思维实验,因为我根本不知道如何实现这一点——我已经尝试让函数accept**kwargs并搜索键以找到合适的参数,考虑传入2个列表并通过*argsCheck out:传入这些命令,假设func2:def func2有两种可能(arg1、arg2、arg3):。。。def altfunc2(arg1,arg2):。。。。只要传递的参数数量与func2版本所采用的参数数量相匹配,就不会出现错误?@A.Savino:是。只要参数的数量匹配,就不会有错误。我不明白你所说的
func2的两种可能性是什么意思。你能解释一下吗?