关于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 列表(List) 的三种遍历方法实例 详解
Apr 15 Python
Python基础教程之浅拷贝和深拷贝实例详解
Jul 15 Python
Python中反射和描述器总结
Sep 23 Python
详解pandas数据合并与重塑(pd.concat篇)
Jul 09 Python
python+numpy实现的基本矩阵操作示例
Jul 19 Python
python Jupyter运行时间实例过程解析
Dec 13 Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 Python
Python3.7安装pyaudio教程解析
Jul 24 Python
python在CMD界面读取excel所有数据的示例
Sep 28 Python
python实现一个简单RPC框架的示例
Oct 28 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
Jan 21 Python
Python如何把不同类型数据的json序列化
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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
this.$toast() 了解一下?
2019/04/18 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
Python复制目录结构脚本代码分享
2015/03/06 Python
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
Python 文件数据读写的具体实现
2020/01/24 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
小学教师自我鉴定
2013/11/07 职场文书
文史专业毕业生自荐信
2013/11/17 职场文书
优秀学生事迹材料
2014/02/08 职场文书
信用卡工资证明格式
2014/09/13 职场文书
合作经营协议书范本
2014/09/16 职场文书
三方合作意向书范本
2015/05/09 职场文书
仓库管理制度范本
2015/08/04 职场文书