4.2 包(package)
定义
- 将多个模块封装到文件夹进行管理、使用
- 文件夹下应该有__init__.py文件
包的导入和使用
- 使用
- import …
- from … import …
- 第一个…为包或者包内模块名,第二个…为包或者模块或者模块内的方法
- as 启用别名
- import package/package.moudle as my
- from p/p.m import p/p.m/p.m.method as my
- from p/p.m import *
- 会将包内或者模块内所有非私有变量全部导入
- 不建议使用这种方式导入,易产生混乱
- 可以在__init__.py使用__all__进行约束
注意事项
- python3中可以没有__init__文件,python2中必须有该文件
- init.py内可以为空,也可以是初始化包的代码
绝对导入和相对导入
- 当包内有多级包,互相需要调用的时候
- 推荐使用相对导入
- 绝对导入
- from p/p.m import m
- 优点:模块可以执行
- 缺点:如果修改了包的整体目录结构,需要手动修改文件
- 适用于个人使用的包
- 相对导入
- 同级目录下
- from后面跟一个点,可以接模块名
- from ./.m import module/method
- 更高级目录
- 退几级就有几个.
- from ..p/..p.m/..m import module/method
- 优点:如果修改了包的整体目录结构, 不需要手动修改文件
- 缺点:模块不能执行
- 适用于只交给其他地方调用的包