有没有一种方法可以从一个字符串中 "引用 "一个模块?例如,下面的内容很重复。
module = "module1"
if module == "module1":
module1.function1()
elif module == "module2":
module2.function1()
elif module == "module3":
module3.function1()
# Other code...
if module == "module1":
module1.function2()
elif module == "module2":
module2.function2()
elif module == "module3":
module3.function2()
所以我想知道是否有更好的方法来做,比如说 exec(module).function1()
(这一点,没有用,可能也不安全......)
另外,有没有更好的方法来编码这种类型的东西?每个文件都是针对不同的站点,但有相同的功能。
如果你的字符串和你的模块名称不同,你可以在程序开始时设置一个dict。
import module1
import module2
modules = {
"module1": module1,
"module2": module2,
...
}
...
modules[moduleName].function1()
modules[moduleName].function2()
如果你的字符串总是和模块的名字一样, 那么你可以使用... ... importlib
:
from importlib import import_module
...
import_module(moduleName).function1()
import_module(moduleName).function2()