关于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 15 Python
python中map、any、all函数用法分析
Apr 21 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
Appium Python自动化测试之环境搭建的步骤
Jan 23 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
Feb 21 Python
详解小白之KMP算法及python实现
Apr 04 Python
Python 实现一个手机号码获取妹子名字的功能
Sep 25 Python
Python3.7下安装pyqt5的方法步骤(图文)
May 12 Python
Django 解决阿里云部署同步数据库报错的问题
May 14 Python
python实现画图工具
Aug 27 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
python处理写入数据代码讲解
Oct 22 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合并数组中相同元素的方法
2014/11/13 PHP
php 使用array函数实现分页
2015/02/13 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
用 JavaScript 迁移目录
2006/12/18 Javascript
通过javascript设置css属性的代码
2009/12/28 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
DOM节点删除函数removeChild()用法实例
2015/01/12 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
vue-router传参用法详解
2019/01/19 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
Python用threading实现多线程详解
2017/02/03 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
利用HTML5 Canvas API绘制矩形的超级攻略
2016/03/21 HTML / CSS
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
strstr()的简单实现
2013/09/26 面试题
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
介绍一下木马病毒的种类
2015/07/26 面试题
2015年入党积极分子评语
2015/03/26 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
python生成随机数、随机字符、随机字符串
2021/04/06 Python
Django实现聊天机器人
2021/05/31 Python