iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 模块重载的五种方法
  • 432
分享到

python 模块重载的五种方法

2024-04-02 19:04:59 432人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录环境准备禁止重复导入重载模块方法一重载模块方法二重载模块方法三重载模块方法四重载模块方法五环境准备 新建一个 foo 文件夹,其下包含一个 bar.py 文件 $ 

环境准备

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


$ tree foo
foo
└── bar.py

0 directories, 1 file

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


print("successful to be imported")

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

禁止重复导入

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


>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>

重载模块方法一

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


>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>
>>> reload(bar)
successful to be imported
<module 'foo.bar' from 'foo/bar.pyc'>

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

重载模块方法二

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


>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>
>>> import imp
>>> imp.reload(bar)
successful to be imported
<module 'foo.bar' from '/Users/MING/Code/Python/foo/bar.py'>

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


<stdin>:1: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses

重载模块方法三

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


>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>
>>> import importlib
>>> importlib.reload(bar)
successful to be imported
<module 'foo.bar' from '/Users/MING/Code/Python/foo/bar.py'>

重载模块方法四

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

还可以使用下面的方法


>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>
>>> bar.__spec__.loader.load_module()
successful to be imported
<module 'foo.bar' from '/Users/MING/Code/Python/foo/bar.py'>

重载模块方法五

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


>>> import foo.bar
successful to be imported
>>>
>>> import foo.bar
>>>
>>> import sys
>>> sys.modules['foo.bar']
<module 'foo.bar' from '/Users/MING/Code/Python/foo/bar.py'>
>>> del sys.modules['foo.bar']
>>>
>>> import foo.bar
successful to be imported

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

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

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


>>> import foo.bar
successful to be imported
>>>
>>> import foo.bar
>>>
>>> import sys
>>> del sys.modules['foo.bar']
>>> from foo import bar
>>>

以上就是python 模块重载的五种方法的详细内容,更多关于python 模块重载的资料请关注编程网其它相关文章!

--结束END--

本文标题: python 模块重载的五种方法

本文链接: https://www.lsjlt.com/news/124442.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 模块重载的五种方法
    目录环境准备禁止重复导入重载模块方法一重载模块方法二重载模块方法三重载模块方法四重载模块方法五环境准备 新建一个 foo 文件夹,其下包含一个 bar.py 文件 $ ...
    99+
    2024-04-02
  • Python重新加载模块方法
    为防止两个模块互相导入的问题,Python默认所有的模块都只导入一次,如果需要重新导入模块,Python2.7可以直接用reload(),Python3可以用下面几种方法: 方法一:基本方法from imp import reloadre...
    99+
    2023-01-31
    模块 加载 方法
  • python中有哪些模块重载的方法
    本篇文章为大家展示了python中有哪些模块重载的方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pil...
    99+
    2023-06-14
  • python下载模块的方法
    本篇内容介绍了“python下载模块的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、模块的下载Python模块(第三方库): htt...
    99+
    2023-06-30
  • Python 重新加载模块
    在进行模块化编程时,经常会遇到这样一种场景: 编写了一个 Python 模块,并用 import my_module 的形式进行导入。当对该模块进行更改后,即使重新导入,其中的任何改变都不会被识别,这使得模块调试变得非常困难。...
    99+
    2023-01-31
    模块 加载 Python
  • Python模块导入的几种方法
    在Python语言的编辑器里,除了默认的内置函数外,其他函数的调用,必须先通过import语句将其导入才能使用。 import语句导入整个函数模块 导入方法: import 函数模块名 示例 新建一个名为func_test.py的文件,...
    99+
    2023-01-30
    模块 几种方法 Python
  • Python安装模块的几种方法
    一、方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包,进行解压,进入模块文件夹,执行:python setup.py install 三、 方法3:eas...
    99+
    2023-01-31
    模块 几种方法 Python
  • python各种模块下载网址
    https://pypi.python.org/pypi 另外,也可以通过命令安装: # pip install  $MODULE_NAME # pip search $MODULE_NAME ...
    99+
    2023-01-31
    模块 网址 python
  • python添加模块路径的三种方法
    之前对mac os系统自带的python进行了升级,结果发现新安装的python的site-packages目录并没有加到python的系统路径中,所以在使用其他库时发现出现了缺少模块的错误。查看python的模块路径方法是import ...
    99+
    2023-01-31
    三种 路径 模块
  • Python中怎么实现模块重载
    本篇文章为大家展示了Python中怎么实现模块重载,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。环境准备新建一个 foo 文件夹,其下包含一个 bar.py 文件$ tree f...
    99+
    2023-06-16
  • 关于python中模块和重载的问题
    目录模块和重载模块与命名空间模块和重载 简单来讲,任意一个以.py结尾的python文件都是一个模块。例如有A.py和B.py两个文件。在A中可以通过导入B来读取B模块定义的内容,导...
    99+
    2024-04-02
  • python中list的五种查找方法
    Python中是有查找功能的,五种方式:in、not in、count、index,find 前两种方法是保留字,后两种方式是列表的方法。 下面以a_list = ['a','b','c','hello'],为例作介绍:  string...
    99+
    2023-01-31
    五种 方法 python
  • Python 方法重载
    python的方法重载有些特殊,在python中,如下的代码并不能实现方法重载: def Aa():     pass def Aa(a):     print(1) def Aa(a,b):     print(2) # ...
    99+
    2023-01-31
    方法 Python
  • python重载方法
    据说,python的对象天生拥有一些神奇的方法,他们总被双下划线包围,他们是面向对象Python的一切。他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被Python所调用,...
    99+
    2023-01-31
    方法 python
  • Java实现List去重的五种方法详解
    目录通过HashSet去重(不保证顺序)通过HashSet去重(保证顺序)遍历后判断赋给另一个list集合去重(保证顺序)通过TreeSet去重(保证顺序)Java8中Stream流...
    99+
    2022-11-13
    Java List去重方法 Java List去重 Java去重 List 去重
  • JavaScript数组去重的五种方法是什么
    本篇内容介绍了“JavaScript数组去重的五种方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • Python中五种列表拷贝的方法
    目录1. 赋值操作2. 使用copy操作3. 使用list()构造函数4. 使用索引5. 列表生成式6 总结1. 赋值操作 最容易想到的就是我们可以使用赋值操作来直接复制列表, 代码...
    99+
    2024-04-02
  • Python种导入模块的三种方式是什么
    本篇内容介绍了“Python种导入模块的三种方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1 . import  >&g...
    99+
    2023-06-02
  • python模块安装的方法
    这篇文章主要介绍了python模块安装的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python模块安装的方法文章都会有所收获,下面我们一起来看看吧。本文教程操作环境:windows7系统、Python ...
    99+
    2023-06-30
  • Python模块化和第三方模块安装的方法
    这篇文章主要介绍了Python模块化和第三方模块安装的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python模块化和第三方模块安装的方法文章都会有所收获,下面我们一起来看看吧。模块化编程1.什么叫模块(...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作