第10.7节 Python包和子包的定义步骤
一、 包的定义步骤
- 按照包名创建或使用一个已有目录,目录名就是包名,必须注意包的目录必须位于Python加载模块的搜索路径中(具体请参考《第10.1节 Python的模块及模块导入》关于模块导入的注意事项);
- 在该目录内添加一个__init__.py 文件;
- 往包内添加模块文件或子包;
- 编辑__init__.py文件,用于进行包初始化。
子包的定义与包类似,唯一区别就是子包不是目录必须位于Python加载模块的搜索路径中,而是子包目录必须位于其上层包所在的目录内。
二、 案例
我们来规划一个商品价格查询的目录结构:
老猿将这个包存放在c:\PythonSrc这个目录下,且c:\PythonSrc这个目录在Python的搜索目录中,其文件目录结构如下:
子包dataaccess的目录文件信息如下:
三、 案例说明
上述截图中可以看到:
1、 在包goodspricequery和子包dataaccess下,都有__init__.py文件;
2、 子包dataaccess是包goodspricequery对应目录的子目录。
四、 本规划的包的几个源代码
- 包goodspricequery的__init__.py文件
'''package goodspricequery is a example of module and package,inculding:
1.subpackage:dataacess
2.module:mainwin
'''
print('Start loading packeg:goodspricequery ...')
goodspricequeryloaded=True
dataaccessloaded=False
input('Package goodspricequery loaded!Press Enter to exit.')
- 子包dataaccess的__init__.py文件
'''package dataaccess is a subpackage of package goodspricequery,inculding:
1.module:DBaccess
2.module:goodstype
3.module:goodsprice
'''
print('Start loading dataaccess package ...')
dataaccessloaded=True
DBaccessloaded=False
goodstypeloaded=False
print('Package dataaccess loaded!')
- DBaccess.py文件
print("Module:DBaccess start load...")
def DBaccess():print("I'm DBaccess")
print("Module:DBaccess loaded.")
- mainwin.py文件
print("Module:mainwin start load...")
def mainwin():print("I'm mainwin")
print("Module:mainwin loaded.")
- goodstype.py文件
print("Module:goodstype start load...")
goodstypelist={"G1","G2","G3"}
def goodstype():print("I'm goodstype")
print("Module:goodstype loaded.")
- goodsprice.py文件
print("Module:goodsprice start load...")
goodspricedict={"G1":2000,"G2":2800,"G3":5000}
def goodsprice():print("I'm goodsprice")
print("Module:goodsprice loaded.")
本节介绍了包的定义步骤以及包内子包的定义,并给出了一个包含子包的包目录结构规划以及对应模块及__init__.py的代码文件,通过这些介绍,可以知道Python包的目录构成方式。
老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
请大家多多支持,点赞、评论和加关注!谢谢!
第10.7节 Python包和子包的定义步骤的更多相关文章
- 第10.9节 Python子包的导入方式介绍
在<第10.8节 Python包的导入方式详解>详细介绍了包的导入方式,子包也是包,子包的导入与包的导入方法上没有本质区别,但二者还是有所不同.本节对照二者的方式介绍子包与包导入的关系: ...
- 第10.8节 Python包的导入方式详解
一. 包导入与模块导入的关系 由于包本质上是模块,其实对模块的许多导入方法都适用于包,但由于包的结构与模块有差异,所以二者还是有些区别的: 对包的导入,实际上就是包目录下的__init__.py文件的 ...
- 第10.6节 Python包的概念
一. 引言 在<第10.2节 Python的模块及模块导入>介绍了模块的概念及导入的几个关键点,Python中的模块是一个单个的py文件,当我们开发的项目或功能集由多个文件构成时,我们需要 ...
- 注解 springbootapplication 自动扫描所在包及其子包。会将有注解的加入到spring容器中
注解 springbootapplication 自动扫描所在包及其子包.会将有注解的加入到spring容器中
- eclipse 包与子包的视图显示方式切换
上图Package Presentation ---> Hierarchical(如下图显示父包与子包) 参考:https://zhidao.baidu.com/question/2205086 ...
- 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解
第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一. 引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...
- 第10.11节 Python模块和包小结
Python的模块就是一个独立的Python文件,Python的包是一些功能相关的Python文件放到一个目录下进行统一管理的文件管理结构,包本质上是模块,加载包就是加载包下特定的模块文件__init ...
- 第10.3节 Python导入模块能否取消导入?
模块导入后,是否可以取消导入?实际上当模块导入后,是无法逆向还原到导入前的状态的,但是可以利用"del 模块名"进行导入模块的删除,此时的删除只是删除了导入模块对应的模块变量名,删 ...
- 第10.4节 Python模块的弱封装机制
一. 引言 Python模块可以为调用者提供模块内成员的访问和调用,但某些情况下, 因为某些成员可能有特殊访问规则等原因,并不适合将模块内所有成员都提供给调用者访问,此时模块可以类似类的封装机制类似的 ...
随机推荐
- 5.1 ICommand
1. CanExecute实现 只是将命令绑定到特定控件是不会触发CanExecute方法执行,该方法只是在实例化命令的时候才使用,其余如果需要触发该事件,只能通过后台代码组合触发,如更新一个后台类字 ...
- [MIT6.006] 11. Integer Arithmetic, Karatsuba Multiplication 整型算术,Karatsuba乘法
很多人不喜欢√2的表达,他们认为它不是一个数. 一.卡塔兰数 Catalan numbers 在数方面上,有个著名的数叫卡塔兰数 Catalan numbers,它是组合数学中一个常在各种计数问题中出 ...
- linux netfilter nat1
linux netfilter nat1 2020整理云笔记上传
- FreeMark导出word文件
1.编辑好word 2.将word模板另存为xml格式, 把需要动态生成的文字用${xxx}代替 eg: 张强 替换为:${name} 注意:图片是很长的一个base64的字符,同样替换就好 比如替换 ...
- 众所周知,B站并不是个学习网站
立了一个Flag鸽鸽鸽鸽 我喜立Flag,9月份说要做点视频,不知不觉已经鸽了俩月了.中间就零星时间学了一些剪辑方面的知识,工作太忙,视频一直没有实质进展.视频的灵魂其实是脚本,到现在还没写好.我还是 ...
- 我要进大厂之大数据ZooKeeper知识点(2)
01 我们一起学大数据 接下来是大数据ZooKeeper的比较偏架构的部分,会有一点难度,老刘也花了好长时间理解和背下来,希望对想学大数据的同学有帮助,也特别希望能够得到大佬的批评和指点. 02 知识 ...
- python-Requests模块的使用
1. Requests简介 Requests模块是一个用于网络访问的模块,其实类似的模块有很多,比如urllib,urllib2,httplib,httplib2,他们基本都提供相似的功能,那为什么R ...
- 都0202了,还在问Vegas和Pr哪个好?
自媒体时代,蕴藏着很多机会.许多平凡的人,通过制作视频,收获了掌声.赢得了粉丝,甚至改变了自己的命运. 图1:B站百大UP主颁奖现场 但这条路真的一路畅通吗?其实不然,他们成功的背后,必定有多方面 ...
- 如何使用ABBYY FineReader 识别竖排或反转文本?
ABBYY FineReader 15(Windows系统)OCR文字识别软件拥有强大的OCR识别功能,能够对这些竖排排版的文档进行准确的识别,另外对于一些具有反转颜色(白色字符和黑暗背景的图像)的文 ...
- locust使用小技巧(v0.13.5)
Windows下载: pip install locustio==0.13.5; 以下基于locust的0.13.5,写文章时时2019年,没想到2020年就大变样了 locust是基于python的 ...