1、背景
a.py中import了b.py,但是當在程序執行過程中,b.py的內容發生了變化
此時由於import只生效一次的局限,導致a.py中使用到了b.py中的方法和變量都是舊的
所以需要在使用新的b.py內容的地方對b.py進行重新加載
2、解決方法
使用python的reload()方法
py2中reload是內置方法,直接使用
py3中需要from imp import reload進行使用
沒有重新加載b的情況:
import b
def sayOld():
print b.name
def changeB():
xxx
# b文件被讀寫了,內容發生了變化
def sayNew():
print b.name
sayOld()
satNew()
>>>
old
old
重新加載了b的情況:
import b
import os,sys
os.sys.path.append(os.path.dirname(__file__))
# 避免在被引用后找不到模塊,我們將模塊路徑加入到pythonpath中
def sayOld():
print b.name
def changeB():
xxx
# b文件被讀寫了,內容發生了變化
def sayNew():
reload(b)
print b.name
sayOld()
satNew()
>>>
old
new
