关于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程序与C++程序的联合使用
Apr 07 Python
Python中正则表达式的详细教程
Apr 30 Python
讲解Python中运算符使用时的优先级
May 14 Python
python Django批量导入不重复数据
Mar 25 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
Jul 13 Python
python生成带有表格的图片实例
Feb 03 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
使用Python实现企业微信的自动打卡功能
Apr 30 Python
对Python中TKinter模块中的Label组件实例详解
Jun 14 Python
python中append实例用法总结
Jul 30 Python
Win10下用Anaconda安装TensorFlow(图文教程)
Jun 18 Python
五种Python转义表示法
Nov 27 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/17 PHP
PHP引用返回用法示例
2016/05/28 PHP
jquery 防止表单重复提交代码
2010/01/21 Javascript
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
js倒计时小程序
2013/11/05 Javascript
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
JavaScript中的Function函数
2015/08/27 Javascript
jQuery 获取页面li数组并删除不在数组中的key
2016/08/02 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
利用jqgrid实现上移下移单元格功能
2018/11/07 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
Python读写Excel表格的方法
2021/03/02 Python
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
strstr()的简单实现
2013/09/26 面试题
勤俭节约倡议书
2014/04/14 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers