模块导入后,是否可以取消导入?实际上当模块导入后,是无法逆向还原到导入前的状态的,但是可以利用“del 模块名”进行导入模块的删除,此时的删除只是删除了导入模块对应的模块变量名,删除后在调用时找不到模块了,但并没有真正删除整个导入模块。为什么这么说呢?这是因为删除后与删除前Python系统内相关的处理不同:

1、 首次导入会执行导入的模块文件,而导入后删除模块在此导入不会执行模块文件;

2、 使用《第10.2节 查看导入的Python模块》介绍的方法还是可以查看到模块名。

请看如下案例:

>>> import importtest
Now in importtest module!
>>> importtest.ftest()
execute ftest function....
>>> del importtest
>>> importtest.ftest()
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
importtest.ftest()
NameError: name 'importtest' is not defined
>>> import importtest #删除后倒入没有执行模块文件
>>> importtest.ftest()
execute ftest function....
>>> import sys
>>> for m in sys.modules:
if str(sys.modules[m]).find(r'(built-in)')==-1 and str(sys.modules[m]).find(r'C:\\Program Files\\Python37')==-1 :print('模块名:',m,', 模块来源: ',sys.modules[m])

执行结果如下:

模块名: _frozen_importlib , 模块来源:  <module 'importlib._bootstrap' (frozen)>
模块名: _frozen_importlib_external , 模块来源: <module 'importlib._bootstrap_external' (frozen)>
模块名: importlib._bootstrap , 模块来源: <module 'importlib._bootstrap' (frozen)>
模块名: importlib._bootstrap_external , 模块来源: <module 'importlib._bootstrap_external' (frozen)>
模块名: pyexpat.errors , 模块来源: <module 'pyexpat.errors'>
模块名: pyexpat.model , 模块来源: <module 'pyexpat.model'>
模块名: xml.parsers.expat.model , 模块来源: <module 'pyexpat.model'>
模块名: xml.parsers.expat.errors , 模块来源: <module 'pyexpat.errors'>
模块名: importtest , 模块来源: <module 'importtest' from 'c:\\pythonsrc\\importtest.py'>
>>>

执行截图:

本节简单介绍了是的能对导入模块进行逆向反导入,可以看到导入的模块可以删除但并不能真正反导入。每个模块只被导入一次,放入字典sys.module中,如果你改变了模块的内容,你必须重启程序,python不支持重新加载或卸载之前导入的模块。

老猿Python,跟老猿学Python!

博客地址:https://blog.csdn.net/LaoYuanPython


请大家多多支持,点赞、评论和加关注!谢谢!

第10.3节 Python导入模块能否取消导入?的更多相关文章

  1. 第10.1节 Python的模块及模块导入

    一. 什么是模块 Python中的模块即单个的Python代码文件,为什么称为模块呢?这是因为在Python中,每个独立的Python文件都可以作为被其他代码导入的模块使用,导入的模块有自己的名字空间 ...

  2. 第10.7节 Python包和子包的定义步骤

    一. 包的定义步骤 按照包名创建或使用一个已有目录,目录名就是包名,必须注意包的目录必须位于Python加载模块的搜索路径中(具体请参考<第10.1节 Python的模块及模块导入>关于模 ...

  3. 第10.6节 Python包的概念

    一. 引言 在<第10.2节 Python的模块及模块导入>介绍了模块的概念及导入的几个关键点,Python中的模块是一个单个的py文件,当我们开发的项目或功能集由多个文件构成时,我们需要 ...

  4. 第10.9节 Python子包的导入方式介绍

    在<第10.8节 Python包的导入方式详解>详细介绍了包的导入方式,子包也是包,子包的导入与包的导入方法上没有本质区别,但二者还是有所不同.本节对照二者的方式介绍子包与包导入的关系: ...

  5. 第10.8节 Python包的导入方式详解

    一. 包导入与模块导入的关系 由于包本质上是模块,其实对模块的许多导入方法都适用于包,但由于包的结构与模块有差异,所以二者还是有些区别的: 对包的导入,实际上就是包目录下的__init__.py文件的 ...

  6. Python之模块和包导入

    Python之模块和包导入 模块导入: 1.创建名称空间,用来存放模块XX.py中定义的名字 2.基于创建的名称空间来执行XX.py. 3.创建名字XX.py指向该名称空间,XX.名字的操作,都是以X ...

  7. 第10.4节 Python模块的弱封装机制

    一. 引言 Python模块可以为调用者提供模块内成员的访问和调用,但某些情况下, 因为某些成员可能有特殊访问规则等原因,并不适合将模块内所有成员都提供给调用者访问,此时模块可以类似类的封装机制类似的 ...

  8. 第10.11节 Python模块和包小结

    Python的模块就是一个独立的Python文件,Python的包是一些功能相关的Python文件放到一个目录下进行统一管理的文件管理结构,包本质上是模块,加载包就是加载包下特定的模块文件__init ...

  9. python常用模块 以及第三方导入

    python常用模块 1模块的分类 标准模块(内置模块)( 标准库 )300 第三方模块 18万 pip install 直接通过pip安装 软件一般会被自动安装你python安装目录的这个子目录里 ...

随机推荐

  1. npm的命令参数 --save-dev和 --save两者有什么区别?

    我们在安装npm包的时候经常会遇到 --save-dev 和 --save 这两个命令参数,两个命令都是往package.json文件里写入信息,两者有什么区别呢? 1. --save 会把依赖包名称 ...

  2. 洛谷 P2018 消息传递

    题目分析 贪心+树形DP 本来还以为要大费周折地换根,然后发现 \(n\) 很小,可以直接 \(O(n^2\log n)\) 枚举. 枚举每个节点作为根,用 \(f_x\) 表示走完以 \(x\) 为 ...

  3. 牛客网-声网2020校招-通用C++笔试题-2020.9.3

    1. 操作系统中两个进程争夺同一个资源会发生什么情况? 答:不一定死锁 解析:产生死锁的四个必要条件为 (1)互斥条件:一个资源每次只能被一个进程使用. (2)不可剥夺条件:进程已获得的资源,在未使用 ...

  4. Ceph的Mon数据重新构建工具

    关于mon的数据的问题,一般正常情况下都是配置的3个mon的,但是还是有人会担心 Mon 万一三个同时都挂掉了怎么办,那么集群所有的数据是不是都丢了,关于后台真实数据恢复,有去后台取对象,然后一个个拼 ...

  5. Python_爬虫_BeautifulSoup网页解析库

    BeautifulSoup网页解析库 from bs4 import BeautifulSoup 0.BeautifulSoup网页解析库包含 的 几个解析器 Python标准库[主要,系统自带;] ...

  6. 分布式 task_master / task_worker

    17:08:0317:08:04 在Thread(线程)和Process(进程)中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread最多只能分 ...

  7. IDEA 2019.3.3 + Pycharm 2020.2.1 安装包及破解步骤

    IDEA IDEA的破解流程就不用再说了,免费试用,添加VMOptions参数,选择破解jar的路径,重启IDEA. 下载地址:链接:https://pan.baidu.com/s/1aTRATVTL ...

  8. BT下载器Folx标签功能怎么实现自动的资源分类

    很多经典的电影作品,比如魔戒三部曲.蜘蛛侠系列.漫威动画系列等,在一个系列中都会包含多个作品.如果使用Folx bt种子下载器自带的电影标签的话,会将这些系列电影都归为"电影"标签 ...

  9. 如何调整MathType公式的字体大小

    作为一名理科生,想必大家都在为编辑公式而烦恼,在Word中要想完美插入公式,还真不是那么简单的.首先要使用专业的公式编辑器MathType,其次还要对公式的大小进行修改,这样才能看起来是相融合的文章. ...

  10. 苹果电脑清理软件CleanMyMac X好用吗?

    为了维护mac系统健康,优化系统功能,我们需要定期给电脑进行清理.那么作为mac清理软件CleanMyMac X软件具备哪些独特性和实用性呢?今天就给大家说明一下. 1. 简洁大气的外观. 用户正版官 ...