如何从分配给变量的模块名称调用函数

时间:2016-07-08 11:00:24

标签: python function module

我正在尝试从模块中调用函数。模块和函数具有相同的名称,在运行时使用raw_input()读取并存储在变量中。

例如,

module.py

def module():
    print "x"

run.py

ent="module"
__import__(ent)
ent()

我可以使用变量ent导入该模块。但是当我使用该变量调用该函数时,我得到了这个错误:

TypeError: 'str' object is not callable

如果在运行之前我不知道他们的名字,我如何从模块中调用该功能?

1 个答案:

答案 0 :(得分:1)

正如Jon所说,您没有保存对导入模块的引用。你需要它来调用它的功能。要实际使用该功能,您可以使用内置的getattr功能。例如,

ent = "module"
mod = __import__(ent)
func = getattr(mod, ent)
func()

然而,使用__import__是相当不寻常的,并且只在特殊情况下才会使用。您的情况是否足够特殊以保证其使用?