logo
39

⏱️ 20分钟

包(Packages):组织多模块代码的目录级方案

你现在可能会困惑什么

“我已经会 module 了,为什么还需要 package?”

当模块变多时,需要目录级组织结构; package 就是“模块集合 + 命名空间”。

一句话定义

Package 是包含多个模块的目录,通常通过 __init__.py 标记并管理导出。

生活类比

module 像一本书,package 像一个书架分类区。

最小可运行例子

myapp/
  __init__.py
  math_utils.py
  string_utils.py
from myapp.math_utils import add
print(add(2, 3))

课堂小测(5 分钟)

  1. 建一个 utils package。
  2. 新建两个模块并导入调用。
  3. __init__.py 暴露统一入口。

课堂小测参考答案与判分点

  • 参考答案方向:能写出可运行代码,并覆盖题目中的核心条件与边界输入。
  • 判分点 1(正确性):主流程结果正确,关键分支可执行。
  • 判分点 2(可读性):变量命名清晰,结构不过度嵌套。
  • 判分点 3(健壮性):对空值、类型错误或异常输入有基础保护。

迁移任务(课后)

把已有工具函数按“字符串/数字/文件”拆成三个模块并归入同一 package。

本节验收标准

你能独立做到:

  • 创建 package 目录结构
  • 跨模块导入函数
  • 管理 package 对外暴露接口

常见报错与调试步骤(新手版)

  • 报错看不懂:先读最后一行错误类型(如 TypeErrorNameError),再回到对应代码行定位。
  • 不确定变量值:在关键位置临时 print(变量, type(变量)),先确认数据是否符合预期。
  • 改了代码却没生效:确认文件已保存、运行的是当前文件、终端环境(venv)是否正确。

常见误区

  • 误区:目录随便建就算 package。
  • 正解:要明确导入路径和结构职责。