模块导入只在第一次生效
光看标题你可能有点不知所云。假如你有一个模块叫做model里面有一个py文件叫做md.py.文件里面写下如下代码:
# model\md.py
print("123")
在交互式页面输入“import model.md”。(使用window的cmd窗口时请用cd命令导入到model的同级页面,然后打开python的交互模式).会在窗口输出“123”。具体情况如下
import model.md
123
然再在同一个页面再次导入import该模块。无论导入多少次都不会有任何信息输出,你会看到如下内容
import model.md
import model.md
import model.md
import model.md
这就说明后面导入的语句并没有生效。如果想再次生效要使用reload()命令,如下
import imp #python3并没有reload()命令,该命令被放在imp包里
imp.reload(model.md)
123
上面的问题解决了,但是还有一个有意思的事情。python是支持递归导入的。比如模块A导入了模块B,如果我现在有一个文件C我导入了模块A,也相当于导入了模块B.那问题就是如果我像上面一样使用reload()重新导入了A是不是也重新导入了B呢?结论是“否”,有兴趣的可以自己测试一下。