python 模块的加载机制与模块的重新载入

加载模块

import 与 from 都是赋值语句。

  • import 把整个模块对象赋值给一个变量名。比如 import A : 一个文件名为 A.py 的模块被导入,生成了一个模块对象,被赋值为 A。
  • from module import x:x 引用了模块中同名变量的对象。若模块没有被加载过,from 语句会将模块首先加载,再创建与模块中同名的变量名进行引用。

如果想要 import dir1.dir2.mod,则目录 dir1、dir2 下必须有个 __init__.py。__init__.py 的作用是把这个目录当成一个模块来使用 , 因为目录并不是实际的模块文件。__init__.py 可以随意写入任何 python 代码,也可以是空的。

当代码运行起来后,模块就已经全部被加载到内存中了。这是如果对 python 脚本进行修改,不会在当前运行中生效。如果想立即执行新的代码,可以重新加载这个模块。

重新加载模块

使用方法:

# Python3
from imp import reload
reload(modulename)

注意:

  • reload 会重新加载已加载的模块,但原来已经使用的实例还是会使用旧的模块,而新生产的实例会使用新的模块;
  • reload 不支持 from [module] import [object] 格式的重新加载,事实上只要重新加载 module 即可。

References
[1] python模块,reload所有模块以及坑
[2] Python reload() 函数

推荐阅读更多精彩内容

  • 六、包 在 Python 中,导入除了可以指定模块名之外,也可以指定目录路径。为了帮助组织模块并提供命名层次结构,...
    常大鹏阅读 1,414评论 0 9
  • 一、模块 1、模块和导入 当程序代码量变得相当大、逻辑结构变得非常复杂的时候,我们最好把代码按照逻辑和功能划分成一...
    常大鹏阅读 2,493评论 0 9
  • IO密集型程序、深拷贝和浅拷贝、模块导入、with 语句 1.1 GIL 学习目标 1. 能够说出 GIL 是什...
    Cestine阅读 193评论 0 0
  • 有一些道理是我们从小就知道的,到了今天好像反而有点迷糊了。所以要拿出来说一说。你最喜欢哪一条? 1、写字好看不好看...
    邓锦瑶阅读 333评论 0 0
  • 刚刚看完这部电影,这是一个关于错过的故事。有人慌张地见面,有人简单地告别。姐姐袁之南离世的那个清晨,只匆匆留下一封...
    姑苏慕容a阅读 142评论 0 1