关于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查询IP地址归属完整代码
Jun 21 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
python re模块的高级用法详解
Jun 06 Python
详解python中的Turtle函数库
Nov 19 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
Python动态声明变量赋值代码实例
Dec 30 Python
Python预测2020高考分数和录取情况
Jul 08 Python
详解Django中的FBV和CBV对比分析
Mar 01 Python
python识别围棋定位棋盘位置
Jul 26 Python
Python 数据可视化之Seaborn详解
Nov 02 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自动更新新闻DIY
2006/10/09 PHP
php实现在线生成条形码示例分享(条形码生成器)
2013/12/30 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
javascript textContent与innerText的异同分析
2010/10/22 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
c++生成dll使用python调用dll的方法
2014/01/20 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
python3访问字典里的值实例方法
2020/11/18 Python
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
自荐信格式技巧有哪些呢
2013/11/19 职场文书
节水口号标语
2014/06/19 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
村官2015年度工作总结
2015/10/14 职场文书
2016年清明节寄语
2015/12/04 职场文书
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫
详解Python内置模块Collections
2022/03/22 Python