Python如何重新加载模块


Posted in Python onJuly 29, 2020

问题

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

解决方案

使用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 相关文章推荐
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
Jan 22 Python
Python操作Word批量生成文章的方法
Jul 28 Python
分享Python开发中要注意的十个小贴士
Aug 30 Python
Python基于高斯消元法计算线性方程组示例
Jan 17 Python
python基础教程项目三之万能的XML
Apr 02 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
Pytorch 实现自定义参数层的例子
Aug 17 Python
Python协程 yield与协程greenlet简单用法示例
Nov 22 Python
python3访问字典里的值实例方法
Nov 18 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
Nov 24 Python
如何使用pdb进行Python调试
Jun 30 Python
python多次执行绘制条形图
Apr 20 Python
Python加速程序运行的方法
Jul 29 #Python
如何在python中判断变量的类型
Jul 29 #Python
Python中的With语句的使用及原理
Jul 29 #Python
解决c++调用python中文乱码问题
Jul 29 #Python
Python 实现简单的客户端认证
Jul 29 #Python
Tensorflow使用Anaconda、pycharm安装记录
Jul 29 #Python
学python爬虫能做什么
Jul 29 #Python
You might like
解决File size limit exceeded 错误的方法
2013/06/14 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
node.js中的fs.link方法使用说明
2014/12/15 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
原生js轮播特效
2017/05/18 Javascript
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
python计算最小优先级队列代码分享
2013/12/18 Python
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
python使用多线程不断刷新网页的方法
2015/03/31 Python
利用python获取某年中每个月的第一天和最后一天
2016/12/15 Python
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
Python类的继承和多态代码详解
2017/12/27 Python
python针对excel的操作技巧
2018/03/13 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
Python根据服务获取端口号的方法
2019/09/25 Python
python中bytes和str类型的区别
2019/10/21 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
new修饰符是起什么作用
2015/06/28 面试题
给物业的表扬信
2014/01/21 职场文书
售后服务经理岗位职责范本
2014/02/22 职场文书
综合办公室主任岗位职责
2014/04/13 职场文书
校庆活动策划方案
2014/06/05 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
三好学生主要事迹材料
2015/11/03 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python