关于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的Django框架的运行方式及处理流程
Apr 08 Python
Python中pygame的mouse鼠标事件用法实例
Nov 11 Python
Python网络编程之TCP套接字简单用法示例
Apr 09 Python
Python实现一个服务器监听多个客户端请求
Apr 12 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 Python
Python实现合并excel表格的方法分析
Apr 13 Python
Python 使用 prettytable 库打印表格美化输出功能
Dec 26 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
Sep 29 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 27 Python
Pandas DataFrame求差集的示例代码
Dec 13 Python
Python sklearn分类决策树方法详解
Sep 23 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
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
杏林同学录(七)
2006/10/09 PHP
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
php实现文件预览功能
2017/05/23 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
Node.js中HTTP模块与事件模块详解
2014/11/14 Javascript
javascript几个易错点记录
2014/11/26 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
2017/05/10 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
Python+django实现简单的文件上传
2016/08/17 Python
Python 中的with关键字使用详解
2016/09/11 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
python定义类self用法实例解析
2020/01/22 Python
Python collections.deque双边队列原理详解
2020/10/05 Python
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
《燕子》教学反思
2014/02/18 职场文书
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python
SpringBoot快速入门详解
2021/07/21 Java/Android
使用Apache Camel表达REST服务的方法
2022/06/10 Servers