【问题标题】:python - pass argument to function in a dictionarypython - 将参数传递给字典中的函数
【发布时间】:2015-03-16 23:36:04
【问题描述】:

我有一个类似开关的东西,给定一个选项将调用一个函数,例如

#... capture option
op = getOption()
#.. capture metric
mt = getMetric()

def zipcode():
    print "You typed zero.\n"
def desc():
    print "n is a perfect square\n"
def address():
    print "n is an even number\n"

#call desired option
options= {0 : zipcode,
          1 : code,
          2 : desc,
          3 : address
}

options[op]()

我正在尝试将一个参数 (mt) 传递到我的 options 字典中,该字典将调用一个函数,但我无法这样做。

如果收到的 op 是 1 并且 mt 是 foo,如何通过传递 mt 作为参数来调用正确的函数(邮政编码)?

理想情况下:options[op](mt) 并在函数中定义一个参数?

谢谢

【问题讨论】:

  • "理想情况下:options[op](mt) 并在函数中定义一个参数?"嗯,是。鉴于您知道答案,我不确定您在问什么。
  • 我的错,我还在字典中指定了参数,例如:options= {0 : zipcode(param1), ..。我还在学习这个很棒的 python 技巧!还是谢谢

标签: python dictionary switch-statement function-calls


【解决方案1】:

您的代码没有正确缩进,这在 Python 中非常重要,并且会导致语法错误。

但是,您的建议将完美运行。

考虑以下几点:

def multiply(m,n):
    return n*n

def add(m,n)
    return m,n

my_math = { "+":add,
            "*":multiply}

你可以这样称呼它:

>>> print my_math["+"](1,2)
3
>>> print my_math["*"](4,5)
20

【讨论】:

  • 哈,明白了!我在字典函数中指定了一个参数,如options= {0 : zipcode(param1), .. 仍然不明白这些 pythonic 调用它是如何工作的,但它摇滚 :)
  • 代码现在缩进了,只是写了一个小例子,错过了最后一个右缩进中断。
猜你喜欢
  • 1970-01-01
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 2015-01-23
  • 1970-01-01
相关资源
最近更新 更多