关于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读取浮点数和读取文本文件示例
May 06 Python
Python THREADING模块中的JOIN()方法深入理解
Feb 18 Python
将Python中的数据存储到系统本地的简单方法
Apr 11 Python
Python找出9个连续的空闲端口
Feb 01 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
Jan 20 Python
Python 的类、继承和多态详解
Jul 16 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
Aug 15 Python
浅谈Django学习migrate和makemigrations的差别
Jan 18 Python
DataFrame 将某列数据转为数组的方法
Apr 13 Python
python redis 删除key脚本的实例
Feb 19 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
Dec 16 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
php处理json时中文问题的解决方法
2011/04/12 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
iframe 自适应高度[在IE6 IE7 FF下测试通过]
2009/04/13 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
详谈DOM简介及节点、属性、查找节点的方法
2017/11/16 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
Python写入数据到MP3文件中的方法
2015/07/10 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
Python的几种主动结束程序方式
2019/11/22 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
简述python Scrapy框架
2020/08/17 Python
python os.rename实例用法详解
2020/12/06 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
什么是事务?事务有哪些性质?
2012/03/11 面试题
HR喜欢的自荐信格式
2013/10/08 职场文书
小学运动会表扬稿
2014/01/19 职场文书
学术会议邀请函范文
2014/01/22 职场文书
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
温馨提示标语
2014/06/26 职场文书
公务员党员评议表自我鉴定
2014/09/14 职场文书
世界红十字日活动总结
2015/02/10 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL