具有可变数量参数的python函数字典

时间:2018-03-07 00:00:43

标签: python python-2.7 dictionary function-pointers

我正在尝试创建一个将字符串映射到函数的字典。问题是,函数可以有不同的参数长度。有没有办法解决这个问题。

例如:

myFuncDict
{
'A' : a    ----> def a(param1, param2)
'B  : b    ----> def b(param1)
'C' : c    ----> def c(param1, param2, param3)
}

I want to call functions like:
def test(k):
 myFuncDict[k](params)

我怎样才能做到这一点? kwargs或args是一种可行的方法,但不知道如何使用那些没有发送额外参数的方法来处理上述问题。

1 个答案:

答案 0 :(得分:3)

Python实际上使这很简单。您可以使用解包运算符*将参数容器解压缩到函数调用中。这是一个例子:

def a(x):
    print(x)

def b(x, y):
    print x, y

dic = {'a': a, 'b': b}


def call_func(func, params):
    dic[func](*params) # *params is the magic.

call_func('a', (1))
call_func('b', (1, 2))