Function 关于python3中的函数分派

Function 关于python3中的函数分派,function,dictionary,switch-statement,python-3.5,dispatch,Function,Dictionary,Switch Statement,Python 3.5,Dispatch,我想进行函数分派,但Python3中没有切换机制。我学会了使用dict来代替,如下所示: def multiply(m,n,o): return m*n*o def add(m,n): return m+n my_math = { "+":add, "*":multiply} 但是,我的函数有不同的参数。 我如何通过我的数学[op](…)传递我的参数? 谢谢~我已经尝试按如下方式重新设计我的代码,它应该可以工作 c = [1,2,3] def m

我想进行函数分派,但Python3中没有切换机制。我学会了使用dict来代替,如下所示:

def multiply(m,n,o):
    return m*n*o    
def add(m,n):
    return m+n
my_math = { "+":add,
            "*":multiply}
但是,我的函数有不同的参数。 我如何通过我的数学[op](…)传递我的参数?
谢谢~

我已经尝试按如下方式重新设计我的代码,它应该可以工作

c = [1,2,3]
def multiply(a):
    return a[0]*a[1]*a[2]
def add(b):
    return b[0]+b[1]
my_math = { "+":add,
            "*":multiply}
print(str(my_math["+"](c)))
print(str(my_math["*"](c)))

我觉得这样会更好

c = [1,2,3]
def multiply(x, y, z):
    return x * y * z
def add(x, y):
    return x + y
my_math = { "+":add,
            "*":multiply}
print(str(my_math["+"](*c)))
print(str(my_math["*"](*c)))
或者,还有一个步骤:

c = [1,2,3]
def multiply(*n):
    return reduce(lambda x, y: x * y, n)
def add(*n):
    return sum(n)
my_math = { "+":add,
            "*":multiply}
print(str(my_math["+"](*c)))
print(str(my_math["*"](*c)))