关于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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
分享一个常用的Python模拟登陆类
Mar 29 Python
pycharm运行和调试不显示结果的解决方法
Nov 30 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
Jul 22 Python
Python 合并多个TXT文件并统计词频的实现
Aug 23 Python
Django Model中字段(field)的各种选项说明
May 19 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 07 Python
python图片灰度化处理的几种方法
Jun 23 Python
简单谈谈Python面向对象的相关知识
Jun 28 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+oracle 分页类
2006/10/09 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
2014/01/31 PHP
php 解压rar文件及zip文件的方法
2014/05/05 PHP
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
javascript call方法使用说明
2010/01/11 Javascript
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
极简的HTML5模版
2015/07/09 HTML / CSS
上课说话检讨书大全
2014/01/22 职场文书
办公室主任职责范本
2014/03/07 职场文书
高中教师个人工作总结
2015/02/10 职场文书
2015年材料员工作总结
2015/04/30 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
运动会通讯稿200字
2015/07/20 职场文书
防震减灾主题班会
2015/08/14 职场文书
Python Django模型详解
2021/10/05 Python