关于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基础之getpass模块详细介绍
Aug 10 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 Python
Python3 处理JSON的实例详解
Oct 29 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
Flask 让jsonify返回的json串支持中文显示的方法
Mar 26 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
【python】matplotlib动态显示详解
Apr 11 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
Python Django中间件,中间件函数,全局异常处理操作示例
Nov 08 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
python 比较字典value的最大值的几种方法
Apr 17 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 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作的文本留言本的例子(三)
2006/10/09 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
再谈javascript原型继承
2014/11/10 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
JavaScript中的Array 对象(数组对象)
2016/06/02 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
js实现产品缩略图效果
2017/03/10 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
Python 变量的创建过程详解
2019/09/02 Python
python 实现绘制整齐的表格
2019/11/18 Python
常用的HTML5列表标签
2017/06/20 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
汉语言文学专业求职信
2014/06/19 职场文书
2014基建处领导班子“四风”对照检查材料思想汇报
2014/10/04 职场文书
幼儿园见习报告
2014/10/30 职场文书
欠款起诉书范文
2015/05/19 职场文书
2016年十一促销广告语
2016/01/28 职场文书
如何写好一份优秀的工作总结?
2019/06/21 职场文书