当import的模块内容更新后,应如何重新加载该模块以反映变化?

2026-05-26 14:411阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计387个文字,预计阅读时间需要2分钟。

当import的模块内容更新后,应如何重新加载该模块以反映变化?

在程序执行过程中,虽然`a.py`中通过`import`导入了`b.py`,但`b.py`的内容发生了变化。由于`import`只生效一次,导致`a.py`中使用的`b.py`的方法和变量都是旧的,未能反映`b.py`的最新修改。因此,需要重新导入`b.py`以使用其最新内容。


1、背景

a.py中import了b.py,但是当在程序执行过程中,b.py的内容发生了变化

此时由于import只生效一次的局限,导致a.py中使用到了b.py中的方法和变量都是旧的

所以需要在使用新的b.py内容的地方对b.py进行重新加载


当import的模块内容更新后,应如何重新加载该模块以反映变化?

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





更多内容详见微信公众号:Python研究所



本文共计387个文字,预计阅读时间需要2分钟。

当import的模块内容更新后,应如何重新加载该模块以反映变化?

在程序执行过程中,虽然`a.py`中通过`import`导入了`b.py`,但`b.py`的内容发生了变化。由于`import`只生效一次,导致`a.py`中使用的`b.py`的方法和变量都是旧的,未能反映`b.py`的最新修改。因此,需要重新导入`b.py`以使用其最新内容。


1、背景

a.py中import了b.py,但是当在程序执行过程中,b.py的内容发生了变化

此时由于import只生效一次的局限,导致a.py中使用到了b.py中的方法和变量都是旧的

所以需要在使用新的b.py内容的地方对b.py进行重新加载


当import的模块内容更新后,应如何重新加载该模块以反映变化?

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





更多内容详见微信公众号:Python研究所