第10.7节 Python包和子包的定义步骤

一、 包的定义步骤

  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

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

原文地址:https://www.cnblogs.com/LaoYuanPython/p/13643653.html