动态执行一个像'module.function'这样的字符串的函数

时间:2013-12-25 03:19:58

标签: python dynamic

如果我有一个像'module.function'这样的字符串,我怎么能一步执行函数? 像somefunction('os.error','args')

2 个答案:

答案 0 :(得分:1)

您可以使用sys.modules动态获取模块,然后您可以使用getattr从模块中获取属性,例如

import sys
func = "os.error"
module, function = func.split(".", 1)
getattr(sys.modules[module], function)()

sys.modules只能提供已加载的模块。因此,如果要动态加载模块,可以使用__import__这样的函数

例如,

module, function = "math.factorial".split(".", 1)
print getattr(__import__(module), function)(5)

<强>输出

120

答案 1 :(得分:0)

您需要做的就是

from module import function

您可以致电

function(x, y, z)

代码。