一、 包的定义步骤

  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


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

第10.7节 Python包和子包的定义步骤的更多相关文章

  1. 第10.9节 Python子包的导入方式介绍

    在<第10.8节 Python包的导入方式详解>详细介绍了包的导入方式,子包也是包,子包的导入与包的导入方法上没有本质区别,但二者还是有所不同.本节对照二者的方式介绍子包与包导入的关系: ...

  2. 第10.8节 Python包的导入方式详解

    一. 包导入与模块导入的关系 由于包本质上是模块,其实对模块的许多导入方法都适用于包,但由于包的结构与模块有差异,所以二者还是有些区别的: 对包的导入,实际上就是包目录下的__init__.py文件的 ...

  3. 第10.6节 Python包的概念

    一. 引言 在<第10.2节 Python的模块及模块导入>介绍了模块的概念及导入的几个关键点,Python中的模块是一个单个的py文件,当我们开发的项目或功能集由多个文件构成时,我们需要 ...

  4. 注解 springbootapplication 自动扫描所在包及其子包。会将有注解的加入到spring容器中

    注解 springbootapplication 自动扫描所在包及其子包.会将有注解的加入到spring容器中

  5. eclipse 包与子包的视图显示方式切换

    上图Package Presentation ---> Hierarchical(如下图显示父包与子包) 参考:https://zhidao.baidu.com/question/2205086 ...

  6. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

  7. 第10.11节 Python模块和包小结

    Python的模块就是一个独立的Python文件,Python的包是一些功能相关的Python文件放到一个目录下进行统一管理的文件管理结构,包本质上是模块,加载包就是加载包下特定的模块文件__init ...

  8. 第10.3节 Python导入模块能否取消导入?

    模块导入后,是否可以取消导入?实际上当模块导入后,是无法逆向还原到导入前的状态的,但是可以利用"del 模块名"进行导入模块的删除,此时的删除只是删除了导入模块对应的模块变量名,删 ...

  9. 第10.4节 Python模块的弱封装机制

    一. 引言 Python模块可以为调用者提供模块内成员的访问和调用,但某些情况下, 因为某些成员可能有特殊访问规则等原因,并不适合将模块内所有成员都提供给调用者访问,此时模块可以类似类的封装机制类似的 ...

随机推荐

  1. Torrent文件的解析与转换

    Torrent简介 BitTorrent协议的种子文件(英语:Torrent file)可以保存一组文件的元数据.这种格式的文件被BitTorrent协议所定义.扩展名一般为".torren ...

  2. pandas_知识总结_基础

    # Pandas 知识点总结 # Pandas数据结构:Series 和 DataFrame import pandas as pd import numpy as np # 一,Series: # ...

  3. JS缓冲运动案例

    点击"向右"按钮,红色的#red区块开始向右缓冲运动,抵达到黑色竖线位置自动停止,再次点击"向右"#red区块也不会再运动.点击"向左"按钮 ...

  4. 【18】进大厂必须掌握的面试题-15个Kafka面试

    1.什么是Kafka? Wikipedia将Kafka定义为"由 Scala编写的Apache软件基金会开发的开源消息代理项目 ,并且是一个分布式的发布-订阅消息系统. 特征 描述 高吞吐量 ...

  5. Mybatis执行SQL的流程

    前篇:Mybatis初始化过程 SqlSession : SqlSession是一个接口,它有两个实现类:DefaultSqlSession (默认)和 SqlSessionManager (弃用,不 ...

  6. linux netfilter 五个钩子点

    参考http://www.linuxtcpipstack.com/685.html#NF_INET_PRE_ROUTING https://opengers.github.io/openstack/o ...

  7. gethostname(获取主机名)、gethostbyname(由主机名获取IP地址)

    int gethostname(char *name, size_t len);获取本地主机名存入name[len],成功返回0,失败返回-1: struct hostent * gethostbyn ...

  8. 关于vm.min_free_kbytes的合理设置推测

    前言 之前系统出现过几次hung住的情况,没有oom,也没有其它内存相关的信息,而linux设计就是去尽量吃满内存,然后再回收清理的机制 探讨 目前这个参数还没有找到合适的处理这个预留的参数,一般也没 ...

  9. BeanFactory and FactoryBean

    BeanFactory,这是Spring容器的基础实现类,它负责生产和管理Bean的一个工厂.当然BeanFactory只是一个接口,它的常用实现有XmlBeanFactory.DefaultList ...

  10. Git本地仓库和远程仓库冲突解决

    场景描述: 在本地创建了一个git repo,并且执行了,git init命令,创建了.gitignore文件,或者README.md文件: 在远程创建了一个git repo,创建时也初始化了.git ...