关于python:动态执行一个像’module.function’这样的字符串的函数

dynamic execute a function by a string like 'module.function'

本问题已经有最佳答案,请猛点这里访问。

如果我有一个类似"module.function"的字符串,如何只执行一步函数?likesomefunction('os.error','args')


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

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

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

例如,

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

产量

1
120


你要做的就是

1
from module import function

你可以打电话

1
function(x, y, z)

在你的代码中。