我想这是一个普遍的问题,如果不能在正确的位置发布,抱歉。
比如说,我有一个aimport的函数os。如果我要多次从另一个文件调用此函数,我是否假设导入也将多次进行?有没有办法仅在模块不存在时才导入?
a
os
基本上,我有一个类,它调用从各个文件导入的多个函数,而不是导入整个文件,我认为仅导入该函数会更容易,但是现在我想知道从长远来看是否会令自己头痛进口过多。
正如描述的蟒蛇文档中,当蟒蛇看到它下面的一些事情的import语句:
import foo
foo
import foo as bar
bar
from foo import bar as baz
baz
因此,每个模块仅导入一次。
为了更好地理解导入机制,我建议创建一个玩具示例。
档案module.py:
module.py
print("import is in progress") def foo(): pass
档案main.py:
main.py
def foo(): print("before importing module") import module module.foo() print("after importing module") if __name__ == '__main__': foo() foo()
将以上文件放入同一目录。当module.py正在导入它打印import is in progress。启动时main.py,它将尝试module多次导入,但输出将是:
import is in progress
module
before importing module import is in progress after importing module before importing module after importing module
因此导入实际上只发生一次。您可以调整此玩具示例以检查您感兴趣的案例。