Python 的reload()方法
来源:互联网 发布:好看的步兵番号知乎 编辑:程序博客网 时间:2024/06/07 05:04
若干注意事项:
1. 如果模块在语法上是正确的,但在初始化过程中失败,则导入过程不能正确地将模块的名字绑定到符号表中。这时,必须在模块能被重新加载之前使用import()函数加载该模块。
2. 重新加载的模块不删除最初旧版本模块在符号表中的登记项。
3. 如果一模块利用from。。。import。。。方式从另一模块导入对象,reload()函数不重新定义导入的对象,可利用import。。。形式避免这个问题。
4. 提供类的重新加载模块不影响所提供类的任何已存实例---已存实例将继续使用原来的方法定义,只有该类的新实例使用新格式。这个原则对派生类同样适用。
在python中,每一个以 .py结尾的Python文件都是一个模块。其他的文件可以通过导入一个模块来读取该模块的内容。导入从本质上来讲,就是载入另一个文件,并能够读取那个文件的内容。一个模块的内容通过这样的属性能够被外部世界使用。
这种基于模块的方式使模块变成了Python程序架构的一个核心概念。更大的程序往往以多个模块文件的形式出现,并且导入了其他模块文件的工具。其中的一个模块文件被设计成主文件,或叫做顶层文件(就是那个启动后能够运行整个程序的文件)。
默认情况下,模块在第一次被导入之后,其他的导入都不再有效。如果此时在另一个窗口中改变并保存了模块的源代码文件,也无法更新该模块。这样设计的原因在于,导入是一个开销很大的操作(导入必须找到文件,将其编译成字节码,并且运行代码),以至于每个文件、每个程序运行不能够重复多于一次。
那么想要使得Python在同一次会话中再次运行文件,该怎么办呢?这就需要调用imp标准库模块中的reload函数。如下所示
from
imp import reload reload(MyModule)
这样就可以重新装载MyModule模块,使得修改有效。
注意:reload函数希望获得的参数是一个已经加载了的模块对象的名称,所以如果在重载之前,请确保已经成功地导入了这个模块。
说明:Python 3.0把reload内置函数移到了imp标准库模块中。它仍然像以前一样重载文件,但是,必须导入它才能使用。在Python 3.0中,运行import imp并使用imp.reload(M),或者像上面所示的,运行from imp import并使用reload(M)
机器学习实战P22页
>>>reload(KNN)改为
Python 3.5.2中
>>>import importlib
>>>importlib.reload(KNN)
在python2中,reload()是内置函数,能够直接使用。
但是在python3中,直接使用reload()会报错,需要从imp中导入。
用法为
- Python 的reload()方法
- Dom的reload方法
- IFrame的Reload方法
- python reload
- Python的reload及热更新
- python中reload(module)的用法
- IFrame中常用的Reload方法
- reload 方法 replace 方法
- Python之reload流程
- Python reload()函数用法
- [Python学习]__import__与reload要注意的
- 飘逸的python - 使用reload进行热更新
- python reload sys 后才能setdefaultencoding 的原因
- Python语言中 import 与 reload 的使用问题
- location.reload()方法简介
- 27. Location reload() 方法
- reload()和replace()方法
- tomcat5.5 reload 出现方法区溢出的问题
- Java
- Python简单抓取瀑布流型百度图片
- docker命令
- Wifi源码学习(Android5.1)之wifi optionItem
- 谈谈MySQL乱码和set names
- Python 的reload()方法
- 树的子结构(代码的鲁棒性)
- ZeroMQ接口函数之 :zmq_setsockopt –设置ZMQ socket的属性
- 输入框中根据用户输入内容动态查询
- [JZOJ5436]【NOIP2017提高A组集训10.30】Group
- 对vue中 默认的 config/index.js:配置的详细理解 -【以及webpack配置的理解】-config配置的目的都是为了服务webpack的配置,给不同的编译条件提供配置
- linux 目录的介绍
- 面对复杂项目,如何提高设计方案的可行性
- Python异常