包管理
包的定义¶
- 包是一种通过使用: 模块名来组织 Python 模块名称空间的方式
- 包就是一个包含有__init__.py文件的文件夹
- 包的本质是模块的一种形式,包是用来被当做模块导入
总结
- 说的直白一点包就是一个文件夹,文件夹里有一个__init__.py,屁都不是
如何使用包¶
-
导包就是在导包下__init__.py 文件
-
两种方式:
- 绝对导入
- 以顶级包为起始(环境变量是以执行文件准备的,所有的被导入的模块或者后续被导入的文件的 sys.path都是以参照执行文件的 sys.path)
- 相对导入
- .表示当前文件所在的目录,..表示当前目录的上一级
- 相对导入只能用在包内
- 绝对导入
-
产生一个名称空间
- 运行包下的__init__.py文件,将运行过程中产生的名字都丢到 1 的名称空间
- 在当前执行文件的名称空间中拿到一个名字 mmm,mmm 指向 1 的名称空间
包的导入强调三点
- 关于包相关的导入语句也分为 import 和 from...import...两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则: 凡是在导入时带点的,点的左边都必须是一个包,否则非法.可以带有一连串的点,如 import 顶级包.子包.子模块,但是都必须遵循这个原则.但对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类 (他们都可以用电的方式调用自己的属性)
- 包 A 和包 B 下有同名模块也不会冲突,如 A.a 与 B.a 来自两个命名空间
- import 导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件