关于python中模块和重载的问题


Posted in Python onNovember 02, 2021

模块和重载

简单来讲,任意一个以.py结尾的python文件都是一个模块。例如有A.py和B.py两个文件。在A中可以通过导入B来读取B模块定义的内容,导入操作本质上就是载入另一个文件。
基于模块的模型是python程序架构背后的核心思想。

一个大型python程序往往以多个模块文件的形式出现,并且从其它模块导入工具。但是通常会指定一个模块文件作为主文件(也叫顶层文件),该文件启动之后,就会运行整个程序。除了顶层文件之外的其他文件都是导入模块。

导入操作将会导致模块中的代码被运行,因此导入文件也是一种运行python文件的方法。 模块文件只有第一次被导入的时候会被执行,之后就不会被执行。如下图所示:

关于python中模块和重载的问题

如果你想在同一个python会话中,多次运行模块文件,你需要调用importlib模块的reload方法(reload方法在python2中是内置方法,在python3中需要从importlib模块中导入)。如下图所示:

关于python中模块和重载的问题

reload函数载入并运行了代码,如果你对reload载入的代码做过修改,那么下一次reload将会载入修改过的代码。如下图所示:

关于python中模块和重载的问题

注意,reload函数使用的前提是之前import过该模块,否则会报错。
因为reload希望获得的参数是一个已经被导入过的模块名称。
reload函数是不传递的,也就是说你重载了A文件,A文件中导入的模块不会被重载。

关于python中模块和重载的问题

导入和重载提供了一种自然的程序启动选项。模块其实起到了一个命名空间的作用。而模块中的变量就是属性。

导入模块可以使用import也可以使用from。它们之间是有一定的差别的,from是复制了模块的属性,使得属性成为该文件的直接变量。这时候你就能直接使用该属性。例如:

关于python中模块和重载的问题

使用load模块的属性a,需要使用object.attributu的方式来使用。而b是通过from方法导入的,则不需要,因为from将b复制到了该文件中,而不是依旧存在于load这个命名空间。

无论是import还是from导入文件,都不需要加python文件扩展名.py,如果你一不小心加上了,那么会报错。

模块与命名空间

每个模块都是自包含的命名空间,一个模块文件无法获得另一个模块文件中的变量,除非它显示的导入那个文件。每一个模块都是一个独立的命名空间。

到此这篇关于关于python中模块和重载的问题的文章就介绍到这了,更多相关python 模块和重载内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 Python
Python3.6.0+opencv3.3.0人脸检测示例
May 25 Python
python实现比较文件内容异同
Jun 22 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 27 Python
python对日志进行处理的实例代码
Oct 06 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
python 多个参数不为空校验方法
Feb 14 Python
python图形界面开发之wxPython树控件使用方法详解
Feb 24 Python
Django框架models使用group by详解
Mar 11 Python
Python如何实现爬取B站视频
May 20 Python
Python中的面向接口编程示例详解
Jan 17 Python
python数据库批量插入数据的实现(executemany的使用)
Apr 30 Python
pandas中对文本类型数据的处理小结
Nov 01 #Python
Python游戏开发实例之graphics实现AI五子棋
Python Django获取URL中的数据详解
Nov 01 #Python
python编程项目中线上问题排查与解决
Nov 01 #Python
python实现层次聚类的方法
Python list列表删除元素的4种方法
Nov 01 #Python
Python面向对象编程之类的概念
Nov 01 #Python
You might like
SMARTY学习手记
2007/01/04 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
javscript对象原型的一些看法
2010/09/19 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
2011/04/07 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
javascript时间函数大全
2014/06/30 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
python爬虫的工作原理
2017/03/05 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
Django与AJAX实现网页动态数据显示的示例代码
2021/02/24 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
蹦床仓库:Trampoline Warehouse
2018/12/06 全球购物
学年自我鉴定
2014/01/16 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
实习生岗位职责
2014/04/12 职场文书
小组口号大全
2014/06/09 职场文书
党员创先争优心得体会
2014/09/11 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
小学生安全保证书
2015/05/09 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
导游词之西安骊山
2019/12/03 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
Python如何使用循环结构和分支结构
2022/04/13 Python