LESSON p.2 · 工程 · 150 分钟
Python 工程习惯:环境、文件、异常与 pytest
Python 工程习惯:环境、文件、异常与 pytest:理解虚拟环境、模块、文件 I/O、异常、断言、单元测试与调试,完成“把一次性脚本改造成可复现的小项目”。属于「零基础先修加速带」学习阶段。
学完你应该能够
- 能创建隔离环境并记录 Python 与依赖版本。
- 能把脚本拆成可导入模块、命令入口与测试。
- 能为文件编码、路径与输入错误设计明确失败方式。
- 能用 pytest 的 arrange–act–assert 结构保护重构。
核心概念
虚拟环境与依赖
项目环境要隔离,并记录解释器与关键包版本。能在新目录重建环境,比“我电脑上能跑”更接近可复现证据。
模块与入口
计算逻辑放在可导入函数中,命令行入口只负责解析参数和调用。这样同一逻辑既能被测试,也能被 notebook 和后续训练脚本复用。
Path 与 UTF-8
路径不是普通字符串拼接问题。使用 pathlib,明确输入文件后缀和 UTF-8 编码,并用临时目录测试,避免依赖当前工作目录。
异常与断言
异常用于外部输入或运行条件不满足,断言用于内部不变量。捕获异常时要缩小范围,并保留足够上下文,而不是 except Exception 后静默继续。
pytest 回归
每个测试固定输入、执行一个行为、检查明确输出。回归测试的价值是让重构和向量化有安全网,而不是追求测试数量。
实践任务
把一次性文本脚本改造成可复现小项目
- 建立 src、tests、README 与依赖清单,记录 Python 版本。
- 把读文件、tokenize、计数和输出拆为独立函数。
- 用 tmp_path 测试 UTF-8 文件、空文件、错误后缀和不存在路径。
- 删除环境后按 README 重建并运行 pytest,记录命令与结果。