37
模块
模块(Modules):从单文件脚本走向可维护项目
你现在可能会困惑什么
“一个文件也能跑,为什么要拆模块?”
因为项目变大后,单文件会难找、难测、难协作。 模块化是工程化第一步。
一句话定义
模块就是可被导入复用的 .py 文件。
生活类比
像厨房分区:刀具区、调料区、清洗区。 按职责拆分,效率和可维护性都更高。
最小可运行例子
mymath.py
def add(a, b):
return a + b
PI = 3.14159
main.py
import mymath
print(mymath.add(2, 3))
print(mymath.PI)
常见导入方式
from mymath import add
print(add(10, 20))
import mymath as mm
print(mm.add(1, 2))
拆模块建议
- 按功能职责拆(如
string_utils.py) - 一个模块内保持主题聚焦
- 避免与标准库同名(如
random.py)
课堂小测(5 分钟)
- 创建
mymath.py并在main.py导入调用。 - 新增
sub/mul函数并验证。 - 用别名导入方式再跑一次。
课堂小测参考答案与判分点
- 参考答案方向:能写出可运行代码,并覆盖题目中的核心条件与边界输入。
- 判分点 1(正确性):主流程结果正确,关键分支可执行。
- 判分点 2(可读性):变量命名清晰,结构不过度嵌套。
- 判分点 3(健壮性):对空值、类型错误或异常输入有基础保护。
迁移任务(课后)
把你的一个 100+ 行脚本拆成“输入模块、处理模块、输出模块”。
本节验收标准
你能独立做到:
- 创建并导入自定义模块
- 区分
import x与from x import y - 按职责拆分文件结构
常见报错与调试步骤(新手版)
- 报错看不懂:先读最后一行错误类型(如
TypeError、NameError),再回到对应代码行定位。 - 不确定变量值:在关键位置临时
print(变量, type(变量)),先确认数据是否符合预期。 - 改了代码却没生效:确认文件已保存、运行的是当前文件、终端环境(venv)是否正确。
常见误区
-
误区:模块命名与标准库冲突。
-
正解:会导致导入异常,命名需避开标准库。
-
误区:大量使用
from x import *。 -
正解:降低可读性并增加命名污染风险。