包介绍

包就是一个含有__init__.py文件的文件夹,文件夹内可以组织子模块或子包,包是可有可无的,但是为了方便统一处理,就放在一起处理

  1. package/ #顶级包
  2. ├── __init__.py
  3. ├── futures #子包
  4. ├── __init__.py
  5. ├── process.py
  6. └── thread.py
  7. └── versions.py #子模块

注意

  1. python3中,即使包下没有__init__.py文件,import 包仍然不会报错,而在python2中,包下一定要有该文件,否则import 包报错

  2. 包的目的只是被导入使用,不是为了运行。包只是模块的一种形式而已

包的使用

导入包

  1. # 文件名:main 路径:''/Users/kevin/Desktop/python/'
  2. from package import *
  3. print(a1.a)
  4. # from a1
  5. print(a2.a)
  6. # from a2
  7. print(a3.a)
  8. # from a3
  1. # 文件名:__init__ 路径:'/Users/kevin/Desktop/python/package/'
  2. from . import a1, a2, a3

包 - 图1

补充:

  1. 索要的名字就是包里面的__init__.py

  2. 好处在于__init__可以提前准备好可以使用的名字

绝对导入

  1. # 文件名:main 路径:''/Users/kevin/Desktop/python/'
  2. from package import a1, a2, a3
  3. print(a1.a)
  4. # from a1
  5. print(a2.a)
  6. # from a2
  7. print(a3.a)
  8. # from a3

补充:

  1. 忽略了__init__的存在,直接使用绝对导入
  2. 直接当成普通文件夹使用