执行按名称标识的功能

时间:2015-06-15 08:50:55

标签: python

我想运行一个由字符串标识的函数。

toRun = 'testFunction'

def testFunction():
    log.info('In the function');

run(toRun)

run将是我需要使用的任何命令。我已经尝试exec / eval没有太多运气了。

4 个答案:

答案 0 :(得分:3)

locals返回包含当前范围

中引用的dict
CheckBox

答案 1 :(得分:2)

最好使用将字符串映射到函数的字典。

locals()[toRun]()

答案 2 :(得分:2)

构建函数getattr()可用于返回作为参数传递的对象的命名属性。

示例

>>> import sys
>>> def function():
...     print 'hello'
... 
>>> fun_object = getattr( sys.modules[ __name__ ], 'function')
>>> fun_object()
hello

它的作用

  • sys.modules[ __name__ ]返回当前模块对象。

  • getattr( sys.modules[ __name__ ], 'function')返回对象名function的属性,sys.modules[ __name__ ]是当前对象。

  • fun_object()调用返回的函数。

答案 3 :(得分:0)

您可以使用eval

eval("testFunction()") # must have brackets in order to call the function

或者你可以

toRun += "()"

eval("eval(toRun)")