在Python中,我想使用用户输入作为函数调用。特别是,我正在测试以下代码:
def forward(forwardValue):
print("in forward, with value " + forwardValue)
return
command = 'forward' # this would come in as user input
value = '255'
command(value)
我想看到的是一个打印输出,上面写着:in forward,值255
我看到的是一个错误:
'str' object is not callable
这个错误消息是有意义的,我可以理解为什么我测试的东西不起作用,但是有什么方法可以做我想做的吗?换句话说,用户输入可以用作函数调用吗?你知道吗
我现在做的是使用“if”语句来检查用户输入是否是“forward”语句,如果是,则调用函数“forward”。但如果可能的话,我想变得更像Python。你知道吗
我有一个用户可以使用的大约30个不同命令的列表,每个命令都有一个定义的函数来处理它。我的一系列30个“如果”和“elif”的陈述看起来很笨拙。你知道吗
Daanii,似乎吸引您的是,名为command的变量包含字符串“forward”。此字符串对象不是您的函数。使用if语句,正如您所说的,是最直接的方法。你知道吗
如果您有许多函数和/或不一定希望函数名和用户传递的字符串匹配,那么我建议使用字典。你知道吗
又快又脏的解决方案
使用
globals()
:更明智的方法
但是,如果安全性是一个问题,您可能希望限制可以从用户输入调用的内容。例如,定义可调用函数的字典:
或与之前的解决方案结合使用以避免重复:
然后调用函数:
替代方法
可以使用类作为用户可调用函数的命名空间:
(如果您使用的是python3.x,
@staticmethod
在此上下文中是可选的)然后使用
getattr()
访问静态方法:相关问题 更多 >
编程相关推荐