加載模塊
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ù)