关于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编写提取日志中的中文的脚本的方法
Apr 30 Python
python利用datetime模块计算时间差
Aug 04 Python
python中函数传参详解
Jul 03 Python
python机器学习案例教程——K最近邻算法的实现
Dec 28 Python
Python 获得命令行参数的方法(推荐)
Jan 24 Python
解决Pycharm无法import自己安装的第三方module问题
May 18 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
Jun 19 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
Python面向对象之继承和多态用法分析
Jun 08 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
Python的Lambda函数用法详解
Sep 03 Python
python解决12306登录验证码的实现
Apr 18 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
我的群发邮件程序
2006/10/09 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
php实现微信公众号无限群发
2015/10/11 PHP
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
php正则修正符用法实例详解
2016/12/29 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
JavaScript ECMA-262-3 深入解析.第三章.this
2011/09/28 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
使用jquery解析XML示例代码
2014/09/05 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
python中的内置函数getattr()介绍及示例
2014/07/20 Python
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
python 默认参数问题的陷阱
2016/02/29 Python
Python实现Linux命令xxd -i功能
2016/03/06 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
在python中实现对list求和及求积
2018/11/14 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
Python进行统计建模
2020/08/10 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
澳大利亚家具和家居用品在线:BROSA
2017/11/02 全球购物
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
泰国第一在线超市:Tops
2021/02/13 全球购物
求职信范文怎么写
2014/01/29 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
ubuntu如何搭建vsftpd服务器
2022/12/24 Servers