我怀疑我想得到清理。
考虑以下名为 ex_1.py
的模块:
print("Hello, I'm ex_1")
def greet(name):
print("Hello, "+name+" nice to meet you! ")
现在考虑另一个名为 1_client_ex_1.py
的文件,它将导入 ex_1.py
模块。
import ex_1.py
现在当我执行这个文件时,我得到的输出是:
Hello, I'm ex_1
不出所料。
但是当我更改为 1_client_ex_1.py
时:
import ex_1.py
import ex_1.py
并执行它,它仍然只打印 Hello, I'm ex_1
一次。它不应该打印两次吗?
原文由 Shonu93 发布,翻译遵循 CC BY-SA 4.0 许可协议
没什么,如果模块已经导入,则不会再次加载。
您将简单地获得对已导入模块的引用(它将来自
sys.modules
)。要获得已经导入的模块列表,您可以查找
sys.modules.keys()
(注意urllib
这里导入了 很多 其他模块):让我们试一试:
如您所见,如果找到一个模块 un
sys.modules
,您将获得对它的新引用。就是这样。请注意,这意味着 模块的设计应使其在导入时不会产生副作用(例如打印内容) 。
在交互式会话之外重新加载模块通常也不是一个很好的做法(尽管它有其用例)——其他答案将详细说明您将如何执行此操作。