关于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使用Tkinter显示网络图片的方法
Apr 24 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
python pandas库中DataFrame对行和列的操作实例讲解
Jun 09 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
使用python判断jpeg图片的完整性实例
Jun 10 Python
python3文件复制、延迟文件复制任务的实现方法
Sep 02 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
May 15 Python
plt.figure()参数使用详解及运行演示
Jan 08 Python
python 实现Requests发送带cookies的请求
Feb 08 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
May 21 Python
Python面向对象之成员相关知识总结
Jun 24 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
解析thinkphp基本配置 convention.php
2013/06/18 PHP
Memcached常用命令以及使用说明详解
2013/06/27 PHP
php使用GeoIP库实例
2014/06/27 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
jquery键盘事件介绍
2011/01/31 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
python+opencv轮廓检测代码解析
2018/01/05 Python
Python中format()格式输出全解
2019/04/12 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2019/12/04 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
python对 MySQL 数据库进行增删改查的脚本
2020/10/22 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
Java基础知识面试题
2014/03/25 面试题
幼儿园托班开学寄语
2014/01/18 职场文书
七年级政治教学反思
2014/02/03 职场文书
初中同学聚会邀请函
2014/02/03 职场文书
人事专员工作职责
2014/02/22 职场文书
小学节能减排倡议书
2014/05/15 职场文书
师范生求职信
2014/06/14 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书
2014年工作总结及2015工作计划
2014/12/12 职场文书
2015年小学开学寄语
2015/02/27 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python