當import的模塊內容發生變化時,對此模塊進行重新加載(刷新)


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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM