我在字典中有几个预定义的函数:
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()
的情况下调用函数?提前感谢。
答案 0 :(得分:0)
喜欢
dict = {
'test1':test1,
'test2':test2,
'test3':test3
}
然后
return dict[input("Type in function")]
如果您想调用该功能,请
return dict[input("Type in function")]()