共计 1702 个字符,预计需要花费 5 分钟才能阅读完成。
欢迎来到 Python 基础入门 Day35!
今天我们进入一个非常重要的话题:Python 项目结构与模块化开发 。
掌握良好的项目组织方式是成为一名优秀 Python 开发者的重要一步!
目录
- 为什么需要项目结构?
- 一个标准的 Python 项目布局
- 模块与包的基本概念
__init__.py文件的作用- 示例:搭建一个简单的项目
- 小结与练习
一、为什么需要项目结构?
在项目初期,也许只有一个 .py 文件;
但随着功能增加,代码量爆发,维护变得困难:
- 文件太多,难以查找
- 函数、类重名,易出错
- 导入路径混乱
- 测试困难
- 新人接手项目困难
因此,从一开始就养成良好的组织习惯,是非常有必要的!
二、一个标准的 Python 项目布局
一般推荐如下目录结构:
my_project/
│
├── README.md # 项目介绍
├── requirements.txt # 项目依赖
├── setup.py # 安装脚本(可选)│
├── my_project/ # 项目主代码(同名文件夹)│ ├── __init__.py
│ ├── module1.py
│ └── module2.py
│
├── tests/ # 测试代码
│ ├── __init__.py
│ └── test_module1.py
│
└── data/ # 数据文件(可选)
注意:
- 项目主代码一般放在与项目同名的文件夹下。
tests/目录专门放测试文件。README.md介绍项目基本信息。
三、模块与包的基本概念
3.1 模块(Module)
- 模块 就是
.py文件。 - 里面可以定义函数、类、变量,也可以直接执行代码。
示例 math_utils.py:
def add(a, b):
return a + b
def subtract(a, b):
return a - b
使用时导入:
import math_utils
print(math_utils.add(3, 5)) # 输出 8
3.2 包(Package)
- 包 就是 包含
__init__.py文件的文件夹。 - 包可以包含多个模块,也可以嵌套子包。
例子:
my_project/
utils/
__init__.py
file_utils.py
string_utils.py
导入时:
from utils import file_utils
或者
from utils.file_utils import some_function
四、__init__.py 文件的作用
- 告诉 Python:这个目录是一个包。
- 可以为空文件,也可以执行一些初始化逻辑。
- 也可以在里面集中导入子模块,方便外部使用。
示例 __init__.py:
from .file_utils import read_file
from .string_utils import capitalize_words
这样就可以直接这样使用:
from utils import read_file
而不用再写 utils.file_utils.read_file。
五、示例:搭建一个简单的项目
假设我们想创建一个处理数学运算的小项目:
目录结构:
simple_calc/
│
├── simple_calc/
│ ├── __init__.py
│ ├── addition.py
│ └── subtraction.py
│
└── main.py
addition.py:
def add(a, b):
return a + b
subtraction.py:
def subtract(a, b):
return a - b
__init__.py:
from .addition import add
from .subtraction import subtract
main.py:
from simple_calc import add, subtract
print(add(10, 5)) # 输出 15
print(subtract(10, 5)) # 输出 5
✅ 这样结构清晰,模块职责单一,易于维护。
六、小结与练习
今日小结
- 理解了为什么需要合理组织项目结构。
- 学习了模块(.py 文件)和包(带
__init__.py文件夹)的概念。 - 知道了如何搭建简单规范的 Python 项目。
今日练习
- 自己新建一个小项目,按照标准目录布局。
- 创建至少两个模块,分别实现不同功能,比如字符串处理、日期处理。
- 写一个简单的
main.py文件调用这些模块。 - 尝试写一个
tests/文件夹,放入测试脚本。
正文完