【发布时间】:2018-03-11 10:54:55
【问题描述】:
我正在编写一个 Python3 程序,我需要能够在其中动态覆盖某些方法。我的文件夹结构更像:
./
prog.py
methods/
add.py
minus.py
在prog.py 中,我想调用在add.py 和minus.py 中定义的calc() 函数。我希望代码可以像这样工作:
def prog('foo'):
from method.foo import calc
calc()
但是在函数中间导入看起来很糟糕,可能会减慢整个程序的速度。有没有什么办法可以达到同样的效果?
我试图变得灵活,以便以后可以添加更多方法,因此我避免使用 if 语句并一次导入所有模块。
【问题讨论】:
-
是否有什么东西阻止你只调用 if 语句分支中的函数,还是比示例显示的更复杂?
-
不,但我正在考虑不时添加不同的 calc()。实际上,我希望在不使用 if 语句的情况下实现 prog(add) 导入 method.add。我会修改我的问题...@BHustus
-
哦,所以您希望能够从某个路径动态加载模块?
-
如果你想动态导入一些东西,有一些方法可以在运行时做到这一点。我不打算将此作为正式答案发布,因为我没有对此进行测试,我不建议从表面上看我的话,但请查看
importlib.import_module并明智地使用del,看看是否可以你需要什么。 -
这是正确的......不会造成麻烦。:) @BHustus
标签: python import python-import