主题
包的结构与使用
包(Package)是 Python 中用于组织模块的目录结构,允许开发者将多个模块组织成逻辑上相关的集合。通过合理使用包,可以提升代码的可维护性与复用性。
什么是包
包是一个带有 __init__.py
文件的目录,其中可以包含多个模块或子包。包的存在使得 Python 支持模块的层级结构。
myproject/
├── main.py
└── mypackage/
├── **init**.py
├── module1.py
└── module2.py
创建包
- 创建一个目录作为包名。
- 在目录中添加一个空的
__init__.py
文件(在较新版本中不是强制,但仍推荐保留)。 - 将相关模块文件放入该目录中。
导入包中的模块
可以通过以下方式导入包内模块:
python
# 完整路径导入
from mypackage import module1
module1.hello()
# 或者导入具体函数
from mypackage.module1 import hello
hello()
__init__.py
的作用
- 标识该目录为一个包;
- 可用于初始化包、定义快捷访问的函数或变量;
- 可以控制
from mypackage import *
时的导入行为。
mypackage/init.py
python
print("mypackage 已被导入")
子包与嵌套包
包可以包含子包,形成多层嵌套结构:
mypackage/
├── __init__.py
└── subpackage/
├── __init__.py
└── utils.py
导入方式:
python
from mypackage.subpackage import utils
相对导入与绝对导入
- 绝对导入:使用完整路径
from mypackage.module1 import hello
- 相对导入:在包内部使用
from .module1 import hello
(点表示当前目录)
包的发布与使用
自定义包可通过以下方式进行发布与分发:
- 使用
setup.py
定义安装信息; - 发布到 PyPI 或通过
pip install .
安装本地包; - 在其他项目中使用
import
引入。
总结
- 包是 Python 项目组织的重要结构单元;
- 使用
__init__.py
文件来控制包的行为; - 子包支持模块的进一步划分,利于大型项目管理;
- 理解包的导入方式有助于构建可维护的工程代码。