我怀疑我是否愿意得到澄清。
考虑以下名为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
。它不应该印两次吗?
只在第一次执行} 和this question。您可以检查
import
语句时加载模块。另请参见^{sys.modules
以找出哪些模块已经加载。没有,如果模块已经导入,则不会再次加载。
您只需获得对已导入模块的引用(它将来自
sys.modules
)。要获取已导入的模块的列表,您可以查找
sys.modules.keys()
(注意urllib
这里导入了一批其他模块):让我们来试一试:
如您所见,如果在
sys.modules
中找到一个模块,您将只获得对它的新引用。就这样。请注意,这意味着模块的设计应确保在导入时不会产生副作用(例如打印内容)。
在交互会话之外重新加载模块通常也不是一个很好的实践(尽管它有自己的用例),其他的答案将详细说明如何做到这一点。
Python脚本只加载一次模块。要重新加载,请使用:
以及
相关问题 更多 >
编程相关推荐