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中针对函数处理的特殊方法
Mar 06 Python
使用Python实现博客上进行自动翻页
Aug 23 Python
彻底理解Python list切片原理
Oct 27 Python
Python迭代器定义与简单用法分析
Apr 30 Python
python读写LMDB文件的方法
Jul 02 Python
Python绘制KS曲线的实现方法
Aug 13 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
调试Django时打印SQL语句的日志代码实例
Sep 12 Python
Python sys模块常用方法解析
Feb 20 Python
python如何从键盘获取输入实例
Jun 18 Python
keras 自定义loss model.add_loss的使用详解
Jun 22 Python
python和js交互调用的方法
Jun 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如何透过ODBC来存取数据库
2006/10/09 PHP
php explode函数实例代码
2012/02/27 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
2019/09/29 PHP
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
Jquery对select的增、删、改、查操作
2015/02/06 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
Web开发必知Javascript技巧大全
2016/02/23 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
基于Python的身份证号码自动生成程序
2014/08/15 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
Python pymongo模块用法示例
2018/03/31 Python
OpenCV 模板匹配
2019/07/10 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
Python Pandas 箱线图的实现
2019/07/23 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
船舶工程技术专业求职信
2014/08/07 职场文书
个人职业及收入证明
2014/10/13 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js