【问题标题】: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)))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-21
        • 2016-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多