Python importlib模块重载使用方法详解


Posted in Python onOctober 13, 2020

模块介绍

Python提供了importlib包作为标准库的一部分。目的就是提供Python中import语句的实现(以及__import__函数)。另外,importlib允许程序员创建他们自定义的对象,可用于引入过程(也称为importer)。

什么是imp?

另外有一个叫做imp的模块,它提供给Python import语句机制的接口。这个模块在Python 3.4中被否决,目的就是为了只使用importlib。

了解:模块的重载

考虑到性能的原因,每个模块只被导入一次,放入字典sys.module中,如果你改变了模块的内容,你必须重启程序,python不支持重新加载或卸载之前导入的模块,

有的同学可能会想到直接从sys.module中删除一个模块不就可以卸载了吗,注意了,你删了sys.module中的模块对象仍然可能被其他程序的组件所引用,因而不会被清楚。

特别的对于我们引用了这个模块中的一个类,用这个类产生了很多对象,因而这些对象都有关于这个模块的引用。

如果只是你想交互测试的一个模块,使用 importlib.reload(), e.g. import importlib; importlib.reload(modulename),这只能用于测试环境。

例子

aa.py

def func1():
  print('func1')

test.py

import time,importlib
import aa
time.sleep(10)
# importlib.reload(aa) 用于模块重新加载
aa.func1()

在10秒的等待时间里,修改aa.py中func1的内容,等待test.py的结果。

打开importlib注释,重新测试

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python进阶_关于命名空间与作用域(详解)
May 29 Python
django中send_mail功能实现详解
Feb 06 Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 Python
详解python如何在django中为用户模型添加自定义权限
Oct 15 Python
使用python和pygame制作挡板弹球游戏
Dec 03 Python
Django models filter筛选条件详解
Mar 16 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
Pygame框架实现飞机大战
Aug 07 Python
BeautifulSoup获取指定class样式的div的实现
Dec 07 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
Jan 27 Python
Python中递归以及递归遍历目录详解
Oct 24 Python
python可视化大屏库big_screen示例详解
Nov 23 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 #Python
Python本地及虚拟解释器配置过程解析
Oct 13 #Python
Pycharm快捷键配置详细整理
Oct 13 #Python
Django项目创建及管理实现流程详解
Oct 13 #Python
OpenCV读取与写入图片的实现
Oct 13 #Python
Django Form常用功能及代码示例
Oct 13 #Python
Python语言编写智力问答小游戏功能
Oct 13 #Python
You might like
PHP中的日期加减方法示例
2014/08/21 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
js点击出现悬浮窗效果不使用JQuery插件
2014/01/20 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
jQuery中:disabled选择器用法实例
2015/01/04 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
2017/03/23 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
python-web根据元素属性进行定位的方法
2019/12/13 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
python使用建议与技巧分享(一)
2020/08/17 Python
python自动化发送邮件实例讲解
2021/01/04 Python
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
QA工程师岗位职责
2013/11/20 职场文书
2015年小学体育工作总结
2015/05/22 职场文书
教师素质教育心得体会
2016/01/19 职场文书
MySQL GRANT用户授权的实现
2021/06/18 MySQL