Python字典:运行自定义函数

时间:2018-07-18 15:45:56

标签: python python-3.x switch-statement case

请协助我进行以下操作。我已经遇到了一些关于Stack的类似问题,但是所提供的示例并未解决我遇到的问题。

在下面的词典中,当用户键入“选项1”时,我想运行一个自定义函数。

  

在当前设置下,自定义函数-writeFunction()-为   无论用户选择哪个选项,都将执行。

选择“选项1”时的输出:

  • 此功能有效
  • 没有

选择“选项2”时的输出:

  • 此功能有效
  • 答案2

如果我将选项1更改为字符串值,它将执行完美。我到底在做什么错了?

# Custom Function
def writeFunction():
    print("This function works")

# Case statement
def case(arg):
    switch = {
        'Option 1':writeFunction(),
        'Option 2':'Answer 2',
        'Option 3':'Answer 3'
    }
    sysResponse = switch.get(arg,"Value not in list")
    print(sysResponse)

# User selection
userSelection = input("Please select option 1 to 3: ")

# Run case statement based on user selection
case(userSelection)

我想避免使用无尽的elif语句。

1 个答案:

答案 0 :(得分:2)

您可以在字典中引用该函数(注意()之后缺少writeFunction),然后检查您检索到sysResponse的对象是否可调用;如果是,请调用它来替换实际值。

如果writeFunction具有副作用或执行速度较慢,则只有在选择该选项后才能执行。

switch = {
    'Option 1': writeFunction,
    'Option 2': 'Answer 2',
    'Option 3': 'Answer 3'
}
sysResponse = switch.get(arg, "Value not in list")
if callable(sysResponse):
    sysResponse = sysResponse()