全库自测与掌握检查
使用方法
先不看笔记完成“闭卷解释”和“现场任务”,再用下方答案要点核对。能认出术语不等于能独立工作;真正的掌握证据是可运行程序、失败测试、运行记录和对剩余风险的准确说明。
闭卷解释
- 解释解释器、虚拟环境、
pip、依赖声明与锁文件的不同职责。 - 类型提示为什么不能替代运行时输入校验?
dataclass又解决什么问题? - 纯函数、I/O 适配器和依赖注入如何共同提高可测试性?
- 解析 JSON 为什么要依次检查字节大小、编码、语法、根类型、字段和业务约束?
- 哪些失败允许重试?单次超时与总 deadline 有什么区别?
- 为什么结果、stderr、日志、指标和 trace 不能混成一条文本流?
- Mock 应放在哪里?为什么 patch 的通常是“查找名称的位置”?
- 并发、并行、并发上限与速率限制分别是什么?
pyproject.toml、requirements 文件和锁文件是否等价?- 模型提出工具调用后,Python 应用还必须执行哪些验证和授权?
答案要点
展开前先写自己的答案。
核对要点
- 解释器执行代码;虚拟环境隔离解释器和包;
pip操作当前环境中的分发包;声明表达直接需求/允许范围;锁定记录一次解析结果。- 注解默认不强制运行时类型;
dataclass生成数据对象的样板方法,也不自动验证不可信输入。- 核心计算无副作用,外部 I/O 集中在小边界,依赖通过参数/协议注入,测试可传 fake。
- 每层解决不同失败,越早拒绝越能控制资源、定位错误并避免脏数据进入核心逻辑。
- 只有明确瞬时、允许重复、未取消且未耗尽总预算的操作;总 deadline 覆盖重试与收尾。
- 它们服务不同消费者和稳定性要求;混合会破坏机器解析、泄漏内容并降低可观测性。
- Mock 外部边界而非核心实现;Python 名称绑定决定被测模块实际调用哪个对象。
- 并发是时间重叠,并行是同时计算;并发上限控制在途量,速率限制控制时间窗口请求量。
- 不等价;项目元数据、安装参数/快照和工具锁定解决不同问题。
- schema 后仍要做运行时业务校验、身份/资源授权、权限最小化、审批、副作用/幂等控制、超时、执行和审计。
现场任务 A:可靠 JSON CLI
限时 90 分钟,从空目录实现:
- 输入为 UTF-8 JSON 数组,每项含
id、text、priority; id唯一,text为 1~500 个 Python 字符,priority为 1~5 的整数(布尔值不得当整数接受);- 输入文件最大 256 KiB;
- 输出按
priority降序、id升序排列,不修改输入; - stdout 输出 JSON,预期输入错误写 stderr 并返回退出码
2; - 至少 10 个测试覆盖边界、非法类型、重复 ID、大小上限和确定性。
完成后写 RUNBOOK.md:记录 Python 版本、运行/测试命令、副作用、未验证项和如何删除输出。不要创建 .venv 于本 vault,也不要放真实凭据。
验收证据
- 在新临时目录运行全部测试;
- 演示一个成功和两个不同失败类别;
-
Get-ChildItem -Recurse -Directory -Filter __pycache__没有任务生成缓存,或已在限定临时目录清理; - 说明排序、字符计数和最大字节数各自采用什么定义;
- 证明重复运行同一输入产生逐字节相同的 stdout。
现场任务 B:把函数变成工具边界
给现有函数 save_note(path, text) 写一份安全重设计,不必接模型:
- 只允许写入可信应用注入的工作区;
- 模型只能提供相对路径和正文;
- 规定扩展名、路径穿越、reparse/symlink 风险和大小上限;
- 已存在文件默认拒绝覆盖,覆盖需要单独授权;
- 写入前提供预览,批准后才执行;
- 定义幂等、超时、原子写、取消和审计语义;
- 用临时目录测试,不修改真实 vault。
这项任务重点是契约和证据,不要求声称 Python 用户态检查构成绝对安全沙箱。
诊断题
1. 包安装成功但 import 失败
按顺序给出至少四个只读检查,必须包含 sys.executable、python -m pip --version、导入名称与分发包名称差异,以及当前工作目录的同名文件遮蔽。
2. 异步批处理偶发卡死
列出可能证据:阻塞同步调用、无底层超时、吞掉取消、无限创建任务、持锁等待、线程函数仍在运行。说明你会先测量哪一项,而不是直接增加并发。
3. 日志中出现 API key
立即停止进一步传播;确认哪些日志/备份/下游已接收;撤销和轮换凭据;按权限处理日志与 Git 历史;用结构化字段允许列表修复根因。仅新增 .gitignore 或字符串遮挡不能证明风险消除。
反例辨析
判断并修正:
- “有类型提示,所以 JSON 一定安全。”
- “所有 5xx 都重试三次即可。”
- “
asyncio会让 CPU 计算自动并行。” - “覆盖率 100%,所以工具行为正确。”
- “把工具描述写严格一些,就不需要权限检查。”
- “
pip freeze就是完整的项目元数据和跨平台锁文件。”
最终掌握标准
可独立完成
- 在 Windows 11 + PowerShell 7 创建、定位和重建
venv + pip环境,再解释何时采用uv。 - 用函数、模块、类型提示和数据类表达边界,同时对不可信数据做运行时校验。
- 用
pathlib、显式 UTF-8 和json可靠读写小型数据。 - 设计具体异常、总时限、有限重试和资源清理。
- 将配置、密钥、用户输出和诊断日志分开。
- 用
unittest覆盖成功、边界和失败路径,适度使用 fake/mock。 - 在需要时实现有限异步并发,正确传播取消。
- 设计可测试的 CLI 与 Agent 工具函数契约。
能说明边界
- 不把本机 3.11 测试误称为 Python 3.14 已验证。
- 不把标准库演示误称为真实 SDK、网络、权限或生产恢复已验证。
- 能列出示例中尚未覆盖的供应链、部署、监控、模型评测和治理问题。
- 遇到版本敏感 API 会核对当前官方文档和项目支持范围。
若仍有三项以上无法独立证明,回到相应条目重做练习,而不是继续堆叠框架 API。
下一步
- 回到 Python基础目录 选择公开课程补缺。
- 继续 API 与 JSON,把本地函数边界扩展为跨进程契约。
- 再进入 Tool Calling(含 Function Calling);不要跳过其授权与执行层。
参考资料
本页整合本路线各节的练习与掌握标准;版本性事实和具体 API 来源见各节参考资料。获取日期:2026-07-14。