包介绍
包就是一个含有__init__.py
文件的文件夹,文件夹内可以组织子模块或子包,包是可有可无的,但是为了方便统一处理,就放在一起处理
package/ #顶级包
├── __init__.py
├── futures #子包
│ ├── __init__.py
│ ├── process.py
│ └── thread.py
└── versions.py #子模块
注意
在
python3
中,即使包下没有__init__.py
文件,import
包仍然不会报错,而在python2
中,包下一定要有该文件,否则import
包报错包的目的只是被导入使用,不是为了运行。包只是模块的一种形式而已
包的使用
导入包
# 文件名:main 路径:''/Users/kevin/Desktop/python/'
from package import *
print(a1.a)
# from a1
print(a2.a)
# from a2
print(a3.a)
# from a3
# 文件名:__init__ 路径:'/Users/kevin/Desktop/python/package/'
from . import a1, a2, a3
补充:
索要的名字就是包里面的
__init__.py
好处在于
__init__
可以提前准备好可以使用的名字
绝对导入
# 文件名:main 路径:''/Users/kevin/Desktop/python/'
from package import a1, a2, a3
print(a1.a)
# from a1
print(a2.a)
# from a2
print(a3.a)
# from a3
补充:
- 忽略了
__init__
的存在,直接使用绝对导入 - 直接当成普通文件夹使用