python重新导入模块_在python中重新导入模块

重新加载模块

倘若,更改了已经在 Python shell 中导入的模块,然后重新导入该模块,Python 会认为“我已经导入了该模块,不需要再次读取该文件”,所以更改将无效。

要解决这个问题,有以下几种方式:

最简单、最有效的方法:重新启动 Python shell。但是,这也有缺点,特别是丢失了 Python shell 名称空间中存在的数据以及其他导入模块中的数据。

对于简单的情况,可以使用 Python 的reload()函数。在许多情况下,在编辑一个模块之后就足够了。

对于更复杂的情况,重新加载被编辑的模块也需要重新加载其依赖/导入的模块(因为它们必须作为被编辑模块初始化的一部分进行初始化),所以 IPython 的autoreload扩展很有用。

PS:

下面主要介绍第 2 种方式 - reload(),其他方式自行尝试。

reload()是 Python 提供的一种简洁的方式,在不同的 Python 版本中有不同的表现形式:

在 Python 2.x 中,reload()是内置函数。

在 Python 3.0 - 3.3 中,可以使用imp.reload(module)。

在 Python 3.4 中,imp 已经被废弃,取而代之的是importlib。

>>> import importlib

>>> import hello

Hello, Python! # 修改前的内容

>>>

>>> importlib.reload(hello)

I am coming... # 修改后的内容

另外的参考

为防止两个模块互相导入的问题,Python默认所有的模块都只导入一次,如果需要重新导入模块,

Python2.7可以直接用reload(),Python3可以用下面几种方法:

方法一:基本方法

from imp import reload

reload(module)

方法二:按照套路,可以这样

import imp

imp.reload(module)

方法三:看看imp.py,有发现,所以还可以这样

import importlib

importlib.reload(module)

方法四:根据天理,当然也可以这样

from importlib import reload

reload(module)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值