用于调用函数的字符串

Har*_*šić 0 python mod-wsgi python-2.7

我有一个非常大的问题.例如:我需要根据给定的字符串导入一个模块,我使用类似的东西

string = 'testmodule'
module = __import__(string)
Run Code Online (Sandbox Code Playgroud)

它有效.现在我需要从给定字符串中调用该模块中的函数

return module.function()
Run Code Online (Sandbox Code Playgroud)

需要像以下一样工作:

string = 'function'
module = 'testmodule'
return module.string()
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用exec,而我现在正在使用它

string = 'function'
module = 'testmodule'
exec('ret = ' + module + '.' + string + '()')
Run Code Online (Sandbox Code Playgroud)

但是如何在不使用该exec方法的情况下完成它,因为它太慢了?

Vik*_*kez 6

用途getattr:

module = __import__('module')
func = getattr(module, 'func')
func()
Run Code Online (Sandbox Code Playgroud)

如果您不是更通用的解决方案,请查看此文件中的get_object函数.您可以提供完整路径:get_object('module.submodule.function')或相对路径和对象:get_object('submodule.function', module)它将返回所需的对象.