环境准备

新建一个 foo 文件夹,其下包含一个 bar.py 文件

bar.py 的内容非常简单,只写了个 print 语句

只要 bar.py 被导入一次,就被执行一次 print

禁止重复导入

由于有 sys.modules 的存在,当你导入一个已导入的模块时,实际上是没有效果的。

重复导入方法一

如果你使用的 python2(记得前面在 foo 文件夹下加一个__init__.py),有一个 reload 的方法可以直接使用

如果你使用的 python3 那方法就多了,详细请看下面

重复导入方法二

如果你使用 Python3.0 -> 3.3,那么可以使用 imp.reload 方法

但是这个方法在 Python 3.4+,就不推荐使用了

重复导入方法三

如果你使用的 Python 3.4+,请使用 importlib.reload 方法

重复导入方法四

如果你对包的加载器有所了解

还可以使用下面的方法

重复导入方法五

既然影响我们重复导入的是 sys.modules,那我们只要将已导入的包从其中移除是不是就好了呢?

有没有发现在前面的例子里我使用的都是 from foo import bar,在这个例子里,却使用 import foo.bar,这是为什么呢?

这是因为如果你使用 from foo import bar 这种方式,想使用移除 sys.modules 来重载模块这种方法是失效的。

这应该算是一个小坑,不知道的人,会掉入坑中爬不出来。

转自:python模块重载的五种方法-侵删

python 重载_python模块重载的五种方法相关推荐

  1. python 条形图填充疏密_教你利用Python玩转histogram直方图的五种方法

    直方图 直方图是一个可以快速展示数据概率分布的工具,直观易于理解,并深受数据爱好者的喜爱.大家平时可能见到最多就是 matplotlib,seaborn 等高级封装的库包,类似以下这样的绘图. 本篇博 ...

  2. python 直方图的绘制方法全解_教你利用Python玩转histogram直方图的五种方法

    直方图 直方图是一个可以快速展示数据概率分布的工具,直观易于理解,并深受数据爱好者的喜爱.大家平时可能见到最多就是 matplotlib,seaborn 等高级封装的库包,类似以下这样的绘图. 本篇博 ...

  3. python智能模块_Python模块常用的几种安装方式

    Python模块安装方法 一.方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二.方法2: 多文件模块,带setup.py 下载模块包,进行解压,进入模块文件夹,执行: pyt ...

  4. python函数可以提高代码执行速度吗_Python代码运行速度慢?这五种方法很管用

    对于Python很多人还是比较了解的,虽然说Python有很多优势但同样具有劣势,Python最大的劣势就是运行效率慢,那么如何提高Python代码运行速度呢?这五种方法很管用. 1.PyPy:在选择 ...

  5. python 获取csv的列数_Python读取excel的两种方法

    excel是什么 Microsoft Excel是一个使用非常广泛的电子表格程序.它的用户友好性和吸引人的功能使其成为数据科学中常用的工具.对于excel来说,整个excel文件称为工作簿,工作簿中的 ...

  6. Python实现将内容写入文件的五种方法总结

    本篇带你详细看一下python将内容写入文件的方法以及细节,主要包括write()方法.writelines() 方法.print() 函数.使用 csv 模块.使用 json 模块,需要的可以参考一 ...

  7. python运行时很卡-Python代码运行速度慢?这五种方法很管用

    对于Python很多人还是比较了解的,虽然说Python有很多优势但同样具有劣势,Python最大的劣势就是运行效率慢,那么如何提高Python代码运行速度呢?这五种方法很管用. 1.PyPy:在选择 ...

  8. python压缩包怎么安装-详解python解压压缩包的五种方法

    这里讨论使用Python解压例如以下五种压缩文件: .gz .tar .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. t ...

  9. Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能

    Python语言学习:基于python五种方法实现使用某函数名[func_01]的字符串格式('func_01')来调用该函数[func_01]执行功能 目录 问题提出 代码五种设计思路 T1方法:e ...

最新文章

  1. Makefile的伪目标
  2. Test Article
  3. java构造方法与重载牛肉粉,IT兄弟连Java基础视频教程
  4. 创业者都有一个共同的特质,他想做事,就立刻做
  5. python学习之装饰器---转
  6. 推荐iOS模拟器截图工具iOS-Simulator Cropper
  7. 基本数据类型与引用数据类型
  8. LeetCode5 最长回文子串
  9. 锁 公平 非公平_推荐引擎也需要公平!
  10. ibm java虚拟机_IBM java VM 最新版的java虚拟机下载及安装的一点说明
  11. leapftp,leapftp中文教程加图解
  12. 【DirectX】D3D中基本图形绘制函数形参意义(总结)
  13. android模拟器 vt,逍遥安卓模拟器怎么开启VT模式 VT虚拟化设置方法
  14. ddl是什么意思网络语_ddl是什么意思(网络语ddl是什么梗)
  15. Swarm and shipyard
  16. 【翻译】CSPNet: A New Backbone that can Enhance Learning Capability of CNN
  17. 马尔科夫链蒙特卡洛(MCMC)
  18. 虚幻UE4/5中如何使用材质节点旋转贴图
  19. 前端食堂技术周刊第 82 期:Vue3.3、Google I/O、CSS In 2023、Remix Conf 2023、Rollup 中文文档、React 中文文档
  20. Longhorn Reloaded M1

热门文章

  1. java项目的逻辑结构
  2. LaTex in Markdown
  3. Ckeditor通过Ajax更新数据
  4. Oracle RAC 常用维护工具和命令
  5. Java 分页之最简单的算法
  6. Arduino教程资料汇总(8月22日悄悄跟新了一下)
  7. PHP的优点和缺点分别是什么,CSS的优点和缺点分别是什么
  8. java date 加一天_Java 8中的时间JAVA成长之路
  9. icp mysql_MySQL · 特性分析 · Index Condition Pushdown (ICP)
  10. python实现socket编程,客户端和服务端之间互相对话(二)