首页 > 其他 > 详细

当import的模块内容发生变化时,对此模块进行重新加载(刷新)

时间:2020-03-14 15:27:14      阅读:49      评论:0      收藏:0      [点我收藏+]

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

  

当import的模块内容发生变化时,对此模块进行重新加载(刷新)

原文:https://www.cnblogs.com/phyger/p/12492216.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!