python 模塊的加載機(jī)制與模塊的重新載入

加載模塊

import 與 from 都是賦值語句。

  • import 把整個(gè)模塊對(duì)象賦值給一個(gè)變量名。比如 import A : 一個(gè)文件名為 A.py 的模塊被導(dǎo)入,生成了一個(gè)模塊對(duì)象,被賦值為 A。
  • from module import x:x 引用了模塊中同名變量的對(duì)象。若模塊沒有被加載過,from 語句會(huì)將模塊首先加載,再創(chuàng)建與模塊中同名的變量名進(jìn)行引用。

如果想要 import dir1.dir2.mod,則目錄 dir1、dir2 下必須有個(gè) __init__.py。__init__.py 的作用是把這個(gè)目錄當(dāng)成一個(gè)模塊來使用 , 因?yàn)槟夸洸⒉皇菍?shí)際的模塊文件。__init__.py 可以隨意寫入任何 python 代碼,也可以是空的。

當(dāng)代碼運(yùn)行起來后,模塊就已經(jīng)全部被加載到內(nèi)存中了。這是如果對(duì) python 腳本進(jìn)行修改,不會(huì)在當(dāng)前運(yùn)行中生效。如果想立即執(zhí)行新的代碼,可以重新加載這個(gè)模塊。

重新加載模塊

使用方法:

# Python3
from imp import reload
reload(modulename)

注意:

  • reload 會(huì)重新加載已加載的模塊,但原來已經(jīng)使用的實(shí)例還是會(huì)使用舊的模塊,而新生產(chǎn)的實(shí)例會(huì)使用新的模塊;
  • reload 不支持 from [module] import [object] 格式的重新加載,事實(shí)上只要重新加載 module 即可。

References
[1] python模塊,reload所有模塊以及坑
[2] Python reload() 函數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 模塊和包 一 模塊 1 什么是模塊? 常見的場(chǎng)景:一個(gè)模塊就是一個(gè)包含了python定義和聲明的文件,文件名就是...
    go以恒閱讀 2,349評(píng)論 0 4
  • If you quit from the Python interpreter and enter it agai...
    linyk3閱讀 463評(píng)論 0 0
  • 六、包 在 Python 中,導(dǎo)入除了可以指定模塊名之外,也可以指定目錄路徑。為了幫助組織模塊并提供命名層次結(jié)構(gòu),...
    常大鵬閱讀 2,596評(píng)論 0 9
  • 一、模塊 1、模塊和導(dǎo)入 當(dāng)程序代碼量變得相當(dāng)大、邏輯結(jié)構(gòu)變得非常復(fù)雜的時(shí)候,我們最好把代碼按照邏輯和功能劃分成一...
    常大鵬閱讀 3,275評(píng)論 0 9
  • IO密集型程序、深拷貝和淺拷貝、模塊導(dǎo)入、with 語句 1.1 GIL 學(xué)習(xí)目標(biāo) 1. 能夠說出 GIL 是什...
    Cestine閱讀 1,128評(píng)論 0 0

友情鏈接更多精彩內(nèi)容