一、 包的定义步骤

  1. 按照包名创建或使用一个已有目录,目录名就是包名,必须注意包的目录必须位于Python加载模块的搜索路径中(具体请参考《第10.1节 Python的模块及模块导入》关于模块导入的注意事项);
  2. 在该目录内添加一个__init__.py 文件;
  3. 往包内添加模块文件或子包;
  4. 编辑__init__.py文件,用于进行包初始化。

    子包的定义与包类似,唯一区别就是子包不是目录必须位于Python加载模块的搜索路径中,而是子包目录必须位于其上层包所在的目录内。

    二、 案例

    我们来规划一个商品价格查询的目录结构:

老猿将这个包存放在c:\PythonSrc这个目录下,且c:\PythonSrc这个目录在Python的搜索目录中,其文件目录结构如下:



子包dataaccess的目录文件信息如下:



三、 案例说明

上述截图中可以看到:

1、 在包goodspricequery和子包dataaccess下,都有__init__.py文件;

2、 子包dataaccess是包goodspricequery对应目录的子目录。

四、 本规划的包的几个源代码

  1. 包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.')
  1. 子包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!')
  1. DBaccess.py文件
print("Module:DBaccess start load...")
def DBaccess():print("I'm DBaccess")
print("Module:DBaccess loaded.")
  1. mainwin.py文件
print("Module:mainwin start load...")
def mainwin():print("I'm mainwin")
print("Module:mainwin loaded.")
  1. goodstype.py文件
print("Module:goodstype start load...")
goodstypelist={"G1","G2","G3"}
def goodstype():print("I'm goodstype")
print("Module:goodstype loaded.")
  1. 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


请大家多多支持,点赞、评论和加关注!谢谢!

最新文章

  1. BestCoder Round #61 1002 Game
  2. [HTML5]label标签使用以及建议
  3. [Java] SSH框架笔记_S2SH整合步骤
  4. I.MX6 PMU MMPF0100 driver porting
  5. System Operations on AWS - Lab 4W - Monitoring (Windows)
  6. Using Apache2 with JBoss AS7 on Ubuntu
  7. bzoj2427
  8. Qt creator 常用的快捷健
  9. Schema-based AOP support
  10. Apache2.2以上版本与Tomcat整合配置及负载均衡实现
  11. 微信h5,背景音乐自动播放
  12. C# 7.1中default关键字的新用法
  13. 记录 spf13-vim 遇到的问题
  14. 转wave 文件解析
  15. WordPress版微信小程序2.1.8版发布
  16. python dpkt 解析 pcap 文件
  17. C语言——第三次作业(2)
  18. 【转】Linux安装HDF5及遇到的问题总结
  19. MySQL 支持utf8mb4
  20. 算法训练 Multithreading

热门文章

  1. 搞微服务用阿里开源的 Nacos 真香啊!
  2. 如何用css设置鼠标属性的小手
  3. create event[]
  4. 《.NET 5.0 背锅案》第2集:码中的小窟窿,背后的大坑,发现重要嫌犯 EnyimMemcachedCore
  5. http 怎样关闭
  6. openwrt——preinit.sh学习
  7. UNP——第四章,TCP套接字编程
  8. python之深浅copy与id
  9. 'sortbitwise'是什么意思
  10. Flink处理函数实战之二:ProcessFunction类