Python如何重新加载模块

 更新时间:2020年07月29日 11:18:05   作者:David Beazley  
这篇文章主要介绍了Python如何重新加载模块,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

问题

你想重新加载已经加载的模块,因为你对其源码进行了修改。

解决方案

使用imp.reload()来重新加载先前加载的模块。举个例子:

>>> import spam
>>> import imp
>>> imp.reload(spam)
<module 'spam' from './spam.py'>
>>>

讨论

重新加载模块在开发和调试过程中常常很有用。但在生产环境中的代码使用会不安全,因为它并不总是像您期望的那样工作。

reload()擦除了模块底层字典的内容,并通过重新执行模块的源代码来刷新它。模块对象本身的身份保持不变。因此,该操作在程序中所有已经被导入了的地方更新了模块。

尽管如此,reload()没有更新像”from module import name”这样使用import语句导入的定义。举个例子:

# spam.py
def bar():
  print('bar')

def grok():
  print('grok')

现在启动交互式会话:

>>> import spam
>>> from spam import grok
>>> spam.bar()
bar
>>> grok()
grok
>>>

不退出Python修改spam.py的源码,将grok()函数改成这样:

def grok():
  print('New grok')

现在回到交互式会话,重新加载模块,尝试下这个实验:

>>> import imp
>>> imp.reload(spam)
<module 'spam' from './spam.py'>
>>> spam.bar()
bar
>>> grok() # Notice old output
grok
>>> spam.grok() # Notice new output
New grok
>>>

在这个例子中,你看到有2个版本的grok()函数被加载。通常来说,这不是你想要的,而是令人头疼的事。

因此,在生产环境中可能需要避免重新加载模块。在交互环境下调试,解释程序并试图弄懂它。

以上就是Python如何重新加载模块的详细内容,更多关于Python重写加载模块的资料请关注脚本之家其它相关文章!

相关文章

  • python通过paramiko复制远程文件及文件目录到本地

    python通过paramiko复制远程文件及文件目录到本地

    这篇文章主要为大家详细介绍了python通过paramiko复制远程文件及文件目录到本地,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • 使用Python Typing模块提升代码可读性和健壮性实例探索

    使用Python Typing模块提升代码可读性和健壮性实例探索

    这篇文章主要为大家介绍了使用Python Typing模块提升代码可读性和健壮性实例探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 关于Torch torchvision Python版本对应关系说明

    关于Torch torchvision Python版本对应关系说明

    这篇文章主要介绍了关于Torch torchvision Python版本对应关系说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python求离散序列导数的示例

    Python求离散序列导数的示例

    今天小编就为大家分享一篇Python求离散序列导数的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 学会这个炫酷图表利器pyecharts,还怕不被公司重用?

    学会这个炫酷图表利器pyecharts,还怕不被公司重用?

    前段时间,公司高层要看上半年度项目组业绩数据分析,没办法,硬着头皮也要上!说到数据分析,肯定离不开数据的可视化,毕竟图表比冷冰冰的数字更加直观,Boss只想一眼就能看出趋势和结论.今天我们就聊一聊 pyecharts 中几种常用的图表, ,需要的朋友可以参考下
    2021-06-06
  • python中的yield使用方法

    python中的yield使用方法

    这篇文章主要介绍了python中的yield使用方法,需要的朋友可以参考下
    2014-02-02
  • python学习之列表的运用

    python学习之列表的运用

    这篇文章主要介绍了python学习之列表的运用,文章首先通过创建列表展开列表运用的相关资料,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • 深入浅析python3中的unicode和bytes问题

    深入浅析python3中的unicode和bytes问题

    在python3中,有两种字符串类型,默认的就是str,即unicode,也叫做文本类型。这篇文章主要介绍了python3中的unicode和bytes问题,需要的朋友可以参考下
    2019-07-07
  • Python3实现从文件中读取指定行的方法

    Python3实现从文件中读取指定行的方法

    这篇文章主要介绍了Python3实现从文件中读取指定行的方法,涉及Python中linecache模块操作文件的使用技巧,需要的朋友可以参考下
    2015-05-05
  • Python登录注册验证功能实现

    Python登录注册验证功能实现

    本篇文章给大家整理了用python实现登陆注册验证的基本会员功能,对此有需要的朋友可以参考下。
    2018-06-06

最新评论