python编程(动态加载)

来源:互联网 发布:使命召唤8 mac 迅雷 编辑:程序博客网 时间:2024/06/05 20:53

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】


    脚本语言都有一个优点,就是动态加载。lua语言有这个优点,python也有这个特性。说简单点就是,如果开发者发现自己的代码有bug,那么他可以在不关闭原来代码的基础之上,动态替换模块。替换方法一般用reload来完成。


1、reload的基本原理

reload主要做了两个动作,删除原来的模块,添加新的模块


2、reload的等效代码

del sys.modules[module_name]__import__(module_name)

3、reload使用的时候要注意什么


3.1 reload的入口参数是module,不是字符串,即

import sysmodule = sys.modules[module_name]


3.2 重载的文件只是对应模块的__init__.py文件,如果是其他文件,则不会生效


3.3 如果是目录中其他文件,则需要分别重新加载,比如

import sysdel sys.modules['module_name:sub_file']__import__('module_name:sub_file')

或者是

reload(sys.modules['module_name:sub_file'])

4、类似的案例还包括如何从字符串找到函数名

getattr(sys.modules['__main__'], 'add')

    大家可以多测试一下,有更好的办法的话也可以一起学习一下。



原创粉丝点击