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() 函数

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 模块和包 一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是...
    go以恒阅读 2,304评论 0 4
  • If you quit from the Python interpreter and enter it agai...
    linyk3阅读 390评论 0 0
  • 六、包 在 Python 中,导入除了可以指定模块名之外,也可以指定目录路径。为了帮助组织模块并提供命名层次结构,...
    常大鹏阅读 2,375评论 0 9
  • 一、模块 1、模块和导入 当程序代码量变得相当大、逻辑结构变得非常复杂的时候,我们最好把代码按照逻辑和功能划分成一...
    常大鹏阅读 3,032评论 0 9
  • IO密集型程序、深拷贝和浅拷贝、模块导入、with 语句 1.1 GIL 学习目标 1. 能够说出 GIL 是什...
    Cestine阅读 895评论 0 0