关于python3中的函数调度

时间:2016-02-14 16:27:01

标签: function dictionary switch-statement python-3.5 dispatch

我想做函数调度,但是在python 3中没有切换机制。我学习使用dict而不是像下面这样:

def multiply(m,n,o):
    return m*n*o    
def add(m,n):
    return m+n
my_math = { "+":add,
            "*":multiply}

但是,我的功能有不同的参数。 如何通过my_math [op](...)传递参数? 感谢〜

2 个答案:

答案 0 :(得分:0)

我尝试按照以下方式重新设计我的代码,它应该可以正常工作。

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)))

答案 1 :(得分:0)

我认为这样会更好。

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)))