从Python中存储的字符串调用函数
这个问题在这里已经有了答案:
你可以这样做 :
eval(input("What function do you want to call? ") + '()')
使用一个字典映射名称的功能。
call_dict = {
'foo': foo,
'bar': bar
}
call_dict[callfunction]()
在Python中使用命令模式很常见。 首先将所有函数移动到一个类中,并为它们指定名称,该名称的前缀未在输入中使用。 然后使用getattr()
来查找正确的函数并调用它。
class Commands():
def cmd_foo(self):
print("Foo")
def callFunction(self, name):
fn = getattr(self, 'cmd_'+name, None)
if fn is not None:
fn()
与Daniel的call_dict相比,这有两个优点:您不必再次列出函数的名称,也不必再次列出可调用函数。
'cmd_'
前缀用于确保您可以在该类中使用其他方法,但仍可精确控制哪些方法可直接调用。