python 动态加载的实现方法

yipeiwu_com6年前Python基础

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

1、reload的基本原理

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

2、reload的等效代码

del sys.modules[module_name]
__import__(module_name)

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

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

import sys
module = sys.modules[module_name]

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

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

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

或者是

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

总结

以上所述是小编给大家介绍的python 动态加载的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对【听图阁-专注于Python设计】的支持!

相关文章

python3+PyQt5+Qt Designer实现扩展对话框

python3+PyQt5+Qt Designer实现扩展对话框

本文是对《Python Qt GUI快速编程》的第9章的扩展对话框例子Find and replace用Python3+PyQt5+Qt Designer进行改写。 第一部分无借用Qt...

和孩子一起学习python之变量命名规则

变量命名规则 下面是关于变量名(也称为标识符)的一些规则 必须以一个字母或一个下划线字符开头。后面可以使用一个字母、数字或下划线字符的序列,长度不限。 字母可以是大写或小写,大小写...

python双向链表实现实例代码

python双向链表实现实例代码

示意图:python双向链表实现代码:#!/usr/bin/python # -*- coding: utf-8 -*- class&nbs...

Python实现一个转存纯真IP数据库的脚本分享

Python实现一个转存纯真IP数据库的脚本分享

前言 之前写过很多关于扫描脚本的文章,一直都没写自己的扫描IP段是哪里搞来的,也会有朋友经常来问一些扫描经验,说实话我觉得这个工具并没有实际的技术含量,但是能提高工作效率,就共享出来给大...

11月编程语言排行榜 Python逆袭C#上升到第4

11月编程语言排行榜 Python逆袭C#上升到第4

TIOBE 11 月编程语言排行榜,Python 逆袭C# 曾经有一段时间,脚本语言因其易于编写和易于运行的特性,被预测在未来将发展强大。因此,Perl,Python,PHP 和 Rub...