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
 
- 优点:如果修改了包的整体目录结构, 不需要手动修改文件
- 缺点:模块不能执行
- 适用于只交给其他地方调用的包