【问题标题】:About functions dispatch in python3关于python3中的函数调度
【发布时间】:2016-05-25 11:04:17
【问题描述】:
我想做函数调度,但是在 python 3 中没有 switch 机制。我学会了使用 dict for 代替,如下所示:
def multiply(m,n,o):
return m*n*o
def add(m,n):
return m+n
my_math = { "+":add,
"*":multiply}
但是,我的函数有不同的参数。
如何通过 my_math[op](...) 传递我的参数?
谢谢~
【问题讨论】:
标签:
function
dictionary
switch-statement
python-3.5
dispatch
【解决方案1】:
我已经尝试重新设计我的代码如下,它应该可以工作。
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)))
【解决方案2】:
我认为这样会更好。
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)))