一、 引言

《第10.2节 Python的模块及模块导入》介绍了模块的概念及导入的几个关键点,Python中的模块是一个单个的py文件,当我们开发的项目或功能集由多个文件构成时,我们需要将这些文件打包,这样在外部引用时这些功能集的功能时,这些文件作为一个整体来进行管理。

二、 概念

在Python中,一个包可以说是一个带特定信息的目录结构:

1、 一个包对应一个目录,包名和目录名保持一致;

2、 包对应目录下必须有一个__init__.py文件,该文件用来标记该目录为包;

3、 __init__.py文件可以为空,也可以是一个有效的python文件,加载包时实际上就是执行__init__.py文件;

4、 要将模块加入包中,只需将模块文件放在包目录中即可,一个包目录可以存放多个模块文件;

5、 包的组织结构中还可以套包,即包可以嵌套,也就是包目录下还可以有子包目录;

6、 从逻辑上看,包的本质是模块的集合,是多个模块依靠目录结构组织在一起形成功能集合对外提供能力输出;

7、 导入包的本质就是加载井执行该包下的__init__.py文件,然后将整个文件内容赋值给与包同名的变量,该变量的类型是 module;

8、 与模块类似,包被导入后会在包目录下生成一个__pycache__子目录,并在该目录内为包生成一个 __init__.cpython-37.pyc 文件。

三、 init.py文件的使用

  1. Python对于定义目录为包的__init__.py文件没有强制要求,只要是一个符合Python代码源文件的文件即可,甚至是一个空文件也可以;
  2. 包的主要作用是组织多个模块或子包提供功能集,而导入包就相当于导入该包下的 __init__.py 文件,因此实际使用时是将包的__init__.py 文件的用于导入该包内包含的模块,而不是用来定义程序单元;
  3. 通过导入包时自动导入包内模块,可把模块中的成员导入变成包内成员这样通过导入包就完成了包内模块的导入,对于调用者来说,只要完成包导入就可以了,不用关注包内的每个模块,通过包就可以访问包内每个模块或子包提供的功能,以后使用起来会更加方便;
  4. 当然也可以导入包时不自动导入包内所有模块,而让调用方自行导入包内的模块,这样调用方仅需导入包内调用方需要使用的模块,可以节省系统开销。

本节老猿介绍了Python中包的概念,可以看到Python包是一种非常灵活的功能集模块文件管理机制,在开发者需要对外提供能力集合时使用非常方便。

老猿Python,跟老猿学Python!

博客地址:https://blog.csdn.net/LaoYuanPython


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

第10.6节 Python包的概念的更多相关文章

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

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

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

    一. 包的定义步骤 按照包名创建或使用一个已有目录,目录名就是包名,必须注意包的目录必须位于Python加载模块的搜索路径中(具体请参考<第10.1节 Python的模块及模块导入>关于模 ...

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

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

  4. python 包的概念

    包的概念 包的概念: 在python中包即使模块,是一系列功能的集合体, 为什么要用包? 提高开发效率 如何用包 import ... from ... import ..... 如何认识它就是一包 ...

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

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

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

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

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

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

  8. day3-Python集合、函数、文件操作,python包的概念

    本节大纲: 1 python程序由包(package).模块(module)和函数组成.包是由一系列模块组成的集合.模块是处理某一类问题的函数和类的集合. 2 包就是一个完成特定任务的工具箱. 3 包 ...

  9. 第10.1节 Python的模块及模块导入

    一. 什么是模块 Python中的模块即单个的Python代码文件,为什么称为模块呢?这是因为在Python中,每个独立的Python文件都可以作为被其他代码导入的模块使用,导入的模块有自己的名字空间 ...

随机推荐

  1. VUE自定义(有限)库存日历插件

    开发过程中遇到一个令人发指的,一个element-ui无法满足的日历需求, 改造其日历插件的代价太大,于是索性自己手写一个,需求如下: 1. 根据开始.结束时间计算时间覆盖的月份,渲染有限的可选择日期 ...

  2. python-找不到tk包

    找不到-tk包 直接sudo apt-get install python3-tk 或者sudo apt-get install python-tk 百度上的方法不可信,还是直接这样一句命令来的实在

  3. 小学生学习C++应该具备哪些基础?

    一.电脑操作基础: 应该具备一些必要的电脑相关的知识,如操作系统的相关知识,如何打开.编辑.保存文件.对电脑的能力有一些基本的认识,以及会使用鼠标,键盘熟练输入. 磨刀不误砍柴工,至少要做到能快速找到 ...

  4. Pandas_基础_全

    Pandas基础(全) 引言 Pandas是基于Numpy的库,但功能更加强大,Numpy专注于数值型数据的操作,而Pandas对数值型,字符串型等多种格式的表格数据都有很好的支持. 关于Numpy的 ...

  5. [MIT6.006] 9. Table Doubling, Karp-Rabin 双散列表, Karp-Rabin

    在整理课程笔记前,先普及下课上没细讲的东西,就是下图,如果有个操作g(x),它最糟糕的时间复杂度为Ο(c2 * n),它最好时间复杂度是Ω(c1 * n),那么θ则为Θ(n).简单来说:如果O和Ω可以 ...

  6. 使用 JavaScript 操作浏览器历史记录 API

    History 是 window 对象中的一个 JavaScript 对象,它包含了关于浏览器会话历史的详细信息.你所访问过的 URL 列表将被像堆栈一样存储起来.浏览器上的返回和前进按钮使用的就是 ...

  7. ceph的df容量显示计算

    显示数据 [root@lab201 ~]# ceph df GLOBAL: SIZE AVAIL RAW USED %RAW USED 1092T 404T 688T 63.01% POOLS: NA ...

  8. Docker与Ceph的分与合

    前言 docker是一个管理工具,在操作系统之上提供了一个新的独立轻环境,好处是本地提供了一个基础镜像,然后基于镜像再运行环境,也可以把环境重新打包为镜像,管理起来类似于git,感觉非常的方便,并且能 ...

  9. USACO 2020 OPEN Favorite Colors【并查集-启发式合并-思考】

    题目链接 题意简述 仰慕喜欢同色奶牛的奶牛喜欢同色 (禁止套娃 ,求一种方案,奶牛喜欢的颜色种数最多,多种方案求字典序最小. 题目解析 这道题我最先想到的居然是二分+并查集,我在想啥 咳咳 首先,考虑 ...

  10. webug第十四关:存储型XSS

    第十四关:存储型XSS 打开发现是评论区 留言加入xss语句