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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章