模块已导入当前模块(无需动态导入),并具有ALIAS名称。 要求是通过别名来引用模块,并调用其函数
当前模块:
import libraries.mymaths.products as myproductlib
def call_func(module_name,method_name):
# module_name = 'myproductlib' , method_name='mult'
# how to call myproductlib.mult here ?
getattr(MODULE_REF, method_name)
会帮助我获取方法的引用,但是如何通过别名来引用模块?
答案 0 :(得分:9)
要获取该模块,您可以使用globals
。要获得此功能,请使用getattr
:
getattr(globals()[module_name], function_name)
导入模块只是将模块对象绑定到您导入它的任何命名空间中的名称。在通常情况下,您在模块的顶层导入,这意味着它会创建一个全局变量。
答案 1 :(得分:0)
以"apackage.somemodule"
之类的FQN模块名称从sys.modules
获取它
import sys
getattr(sys.modules[module_name], function_name)
如果模块名称和/或功能可能不存在,请使用此选项:
mod = sys.modules.get(module_name)
fn = mod and getattr(mod, function_name, None)