使用字典映射从键盘输入调用函数

时间:2017-03-31 09:58:02

标签: python

我在字典中有几个预定义的函数:

dict = {
   'test1':test1(),
    'test2':test2(), 
    'test3':test3()
}

此时我已经有了一个问题:在创建字典后,这些函数会自动运行 - 为什么会这样,我该如何避免呢?

最终,我的目标是输入例如" TEST2"并执行功能(只是以受控方式执行,而不是像上面那样一次)。首先我想使用eval,但是每个人都反对它,我现在明白了。但是替代方案是什么?我试过了

def select_function():
    try:
        return dict[input("Type in function ")]
    except KeyError:
        raise ValueError('Invalid input!')
select_function()

以及

dict.get(input("Type in function "), 'Invalid input!')

但如果输入正确的函数,两者都会返回空行。如果我输错了,我会收到错误消息,因此我的命令应该可以正常工作。我也知道我的功能是有效的,因为正如我所说,它们在我创建字典后会被执行,而且它们只会打印一个问候语(每个函数的另一个用于测试)。

我做错了什么吗?是否有其他方法可以在没有eval()的情况下调用函数?提前感谢。

1 个答案:

答案 0 :(得分:0)

喜欢

dict = {
   'test1':test1,
    'test2':test2, 
    'test3':test3
}

然后

return dict[input("Type in function")]

如果您想调用该功能,请

return dict[input("Type in function")]()