关于 python-practice
用于生成练习并支持调试、代码审查和项目式练习的 Python 学习技能,面向希望掌握 Python 基础、后端、CLI、测试与自动化的学习者。
主要功能
- 01按多种模式生成练习
- 02依据学习情况调整练习
- 03涵盖后端与自动化方向
- 04通过测试验证练习
- 05审查答案并更新学习日志
适用场景
- 01练习 Python 基础知识
- 02调试 Python 练习
- 03准备后端或 AWS 自动化工作
- 04审查练习答案
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nrayyagari/ python-practice-skill --skill python-practice安装后在 Claude Code 中输入/python-practice确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.md.gitignoreevals/prompts.mdreferences/python-learning-guide.mdreview-guide.mdlearning-log.mdtopic-catalog.mdpractice-tracks.mdadaptive-learning.mdexercise-templates.md详细介绍
Python 练习 — 实用熟练度
生成 Python 练习,先培养实用的语言熟练度,再将其应用于后端、CLI、自动化、AWS 工作流、测试和生产风格的项目。
核心目标是熟练使用 Python 构建实用工具。FastAPI、Flask 和 AWS 自动化是首选的应用方向,而不是整个课程的全部内容。
每次常规练习请求都会生成 3 道练习,根据主题分别存为 .py 文件或小型 Python 包。利用根目录中的学习日志选择有价值的练习,但不要运行进度跟踪器,也不要维护隐藏的进度数据库。
用户的所有练习都放在此固定仓库中:
/home/laborant/repos/python-practice
除非用户明确指定其他路径,否则不要在其他位置创建 Python 练习。
适用场景
- 用户想练习 Python、完成练习或挑战、进行代码审查或调试。
- 用户询问函数、类、类型标注、pytest、文件、JSON、HTTP、CLI、API、FastAPI、Flask、boto3、AWS 自动化、后端开发或脚本相关的问题。
- 用户想学习 Python 后端开发、提升自动化技能、编写 AWS 脚本,或为参与开源 Python 项目做准备。
- 用户在解答 Python 练习时说“我卡住了”“审查我的解答”“让它更难/简单一些”,或提出澄清问题。
工作流
步骤 1:缺少主题时询问
如果用户没有指定主题,请提供以下选项:
Which Python area do you want to practice?
1. Foundations — syntax, functions, data structures, files, exceptions
2. OOP + Design — classes, dataclasses, protocols, composition, package boundaries
3. Standard Library — pathlib, json, csv, datetime, collections, itertools, logging, argparse
4. Testing + Quality — pytest, fixtures, mocks, typing, lint-friendly design
5. Backend Python — HTTP, FastAPI, Flask, validation, middleware, service boundaries
6. Automation + AWS — boto3-shaped clients, retries, pagination, IAM-safe scripts, CLIs
7. Data + Utilities — pandas-style data handling, CSV/JSON transforms, reporting scripts
Pick one, or name a specific thing like "FastAPI dependencies" or "boto3 pagination".
如果用户直接指定了主题,则跳过此步骤。
步骤 2:选择学习模式
如果用户没有指定模式,则使用 batch。
模式:
batch:3 道练习。适合稳定练习,默认使用此模式。drill:围绕一个概念或反复出现的错误设计 1 个小型专项任务。debug:包含测试的、有损坏代码的生产风格任务。applied:贴近现实的后端、CLI、AWS 或自动化任务。pr-simulation:阅读一个小型现有软件包,修复错误并解释权衡。design-review:编码前确定软件包边界、类型、依赖项和错误处理方式。capstone:按照综合项目阶梯完成多步骤项目。
根据所选模式控制任务范围。用户要求的是小型专项练习、审查或项目式任务时,不要强行提供 3 道练习。
步骤 3:准备练习工作区
使用 /home/laborant/repos/python-practice 作为练习仓库。
如果该目录不存在,请将其创建为 Git 仓库,并包含:
README.mdlearning-log.md.gitignore
创建练习时,将其放入该仓库下的日期文件夹中。文件夹名称使用以下格式:
D-mmm-YY
示例:
3-may-2630-apr-2612-jun-26
月份使用小写英文缩写:jan、feb、mar、apr、may、
jun、jul、aug、sep、oct、nov、dec。
规则:
- 新的一天,创建当天的文件夹。
- 如果用户当天要求更多练习,将练习添加到同一个文件夹。
- 新练习的编号应接在该文件夹中已有练习的编号之后。
- 将根目录下的
learning-log.md作为跨日期的持久记录。 - 在有帮助时阅读较早日期的文件夹,尤其是在日志提及这些文件夹时。
- 除非用户要求不要提交,否则在
python-practice仓库中提交新增练习。
步骤 4:阅读学习上下文
如果 /home/laborant/repos/python-practice/learning-log.md 存在,则打开它;否则复制 references/learning-log.md 中的初始模板。
查看以下内容:
- 反复出现的错误
- 用户反复提出的澄清问题
- 用户已熟练掌握的概念
- 领域目标和当前重点
- 最近一批练习
- 之前日期的练习文件夹
不要使用 scripts/progress_tracker.py、progress.json 或任何隐藏的评分系统。完成审查后,以及用户提出重要的澄清问题后,直接更新学习日志。
第 5 步:选择难度和领域
使用 references/topic-catalog.md。
当用户想学习后端、FastAPI、Flask、AWS 自动化、CLI/工具开发、数据实用工具或毕业项目方向时,使用 references/practice-tracks.md。
默认进度:
- 难度 1/5:核心语言和小型单文件任务
- 难度 2/5:函数、模块、测试、异常、类型标注和标准库
- 难度 3/5:实用脚本、CLI、后端处理程序、AWS 自动化边界
- 难度 4/5:使用 FastAPI、Flask、AWS 自动化或软件包的项目式任务
- 难度 5/5:包含分阶段测试的毕业项目式软件包或服务开发
根据学习日志调整:
- 反复混淆语法/类型 -> 降低难度,单独练习相关概念。
- 反复询问“为什么要用这种抽象?” -> 加入设计评审或软件包边界任务。
- 反复混淆测试 -> 加入 pytest fixture/mock 练习。
- 基础扎实 -> 转向后端、自动化、AWS 和项目式练习。
- 用户要求挑战 -> 选择难度 3/5 或 4/5,并加入测试和实际约束。
第 6 步:生成练习
创建文件前,先阅读 references/exercise-templates.md。
默认批次:
- 1 道补全练习
- 1 道调试练习
- 1 道带测试的后端/自动化/框架应用练习
调整批次组合:
- 如果用户难以发现 bug -> 2 道调试练习。
- 如果用户提出许多澄清问题 -> 1 道概念练习、1 道引导式补全练习、1 道应用任务。
- 如果用户水平较高 -> 围绕后端、AWS 自动化、测试和实用工具安排 3 道应用任务。
按模式输出:
drill:1 个文件加测试。debug:1 个有问题的文件加测试,或在一个专注的软件包中设置 3 个 bug。applied:1 个小型模块/软件包,包含 README 和测试。pr-simulation:1 个小型、仿照现有项目风格的软件包,包含失败的测试和评审提示。design-review:Markdown 提示,只有在有帮助时才附带骨架软件包。capstone:包含 README、分阶段测试和学习日志检查点的模块。
文件命名:
NN_<topic>_<subtopic>_<type>.py
NN_<topic>_<subtopic>_<type>_test.py
每个日期文件夹中的 NN 从 01 开始。如果日期文件夹中已有练习,则从现有最大编号继续。
对于软件包级练习,创建:
<date-folder>/NN_<topic>_<subtopic>/
README.md
pyproject.toml
src/<package_name>/...
tests/...
每道练习都应包含:
- 简短的头部注释/docstring,说明主题、难度、领域和灵感来源。
- 明确的目标。
- 用于补全任务的
TODO标记,或用于调试任务的故意错误代码。 - 初始状态下会失败的测试。
- 在适用时,采用贴近实际的后端/AWS/框架背景。
- 注释中不得暗藏答案。
- 除非用户明确要求,否则不提供完整解决方案。
优先使用标准库。只有练习确实需要时,才使用 FastAPI、Flask、boto3、pandas 或其他库;否则用小型函数或协议模拟边界,简化环境搭建。
第 7 步:验证练习会按预期失败
在日期文件夹或特定软件包文件夹中运行:
python -m pytest
对于包含内联测试的单文件练习,运行:
python <exercise_file.py>
预期结果:生成的练习应当失败,因为用户还有任务要完成。如果某道练习在用户修改前就通过了,请明确指出缺少的工作并重新运行。
对于后端、AWS 自动化和框架相关工作,优先使用 pytest,因为生产环境中的 Python 开发需要可重复运行的测试。
第 8 步:交付给用户
使用以下结构:
Created <count> Python exercise(s) on <topic> at Difficulty <N>/5.
Focus:
- <why these exercises were selected from learning-log.md>
Files:
- <path> — <one-line task>
- <path> — <one-line task>
- <path> — <one-line task>
Run: cd /home/laborant/repos/python-practice/<date-folder> && python -m pytest
Send me your solution when ready.
第 9 步:评审用户的解决方案
用户要求评审时:
- 仅当练习中已配置格式化/代码检查工具时才运行。不要擅自引入新的工具链。
- 运行
python -m pytest。 - 对于单文件练习,如果这是练习约定的一部分,则运行
python <exercise_file.py>。 - 阅读
references/review-guide.md。 - 先评审正确性,再评审 Python 惯用写法,最后评审后端/AWS/框架方面的生产环境问题。
评审应指出:
- 通过/失败的测试
- Bug 或边界情况
- Python 惯用写法方面的改进
- 类型标注和 API 边界
- 错误处理
- 测试质量
- 适用时与后端/框架/AWS 生产环境的相关性
第 10 步:更新学习日志
每次复习后,手动更新 /home/laborant/repos/python-practice/learning-log.md。
记录:
- 日期文件夹
- 已完成的练习
- 观察到的错误
- 提出过的澄清问题
- 已掌握得更牢的概念
- 仍不熟悉的概念
- 建议的下一批练习
错误示例:
mutable-default-argmissing-returntype-confusionexception-swallowedpath-string-not-pathlibmock-too-broadfixture-scope-confusionfastapi-dependency-confusionflask-global-stateboto3-pagination-missingaws-retry-missingiam-action-too-broadnot-pythonic-loop
澄清问题示例:
- “什么时候应该使用 dataclass?”
- “什么时候该使用 mock,什么时候该使用 fake?”
- “这里为什么要用 pathlib?”
- “在 FastAPI 中应该把验证逻辑放在哪里?”
- “什么时候应该使用 Flask blueprint?”
- “如何处理 boto3 分页?”
- “怎样才能让脚本安全地重复运行?”
如果同一类别的澄清问题出现两次,下一批练习必须包含一项能迫使学习者区分这两者的对比练习。
第 11 步:交互式帮助
- “我卡住了” → 给出提示,而不是答案。提示应结合之前犯过的错误。
- “给我看答案”或其他明确请求 → 提供最精简的完整答案,并解释关键思路。
- “解释这个概念” → 用一个简短的 Python 示例和一个实际用例进行解释。
- “为什么要做这项练习?” → 指出学习日志中的规律和目标领域。
- “增加难度” → 增加针对边界情况、失败路径、验证、幂等性或 mock 的测试。
- “降低难度” → 聚焦于一个概念,并移除外部依赖。
- “像审查后端 Python 代码那样审查这段代码” → 着重关注边界、验证、错误处理、测试和 API 形态。
- “帮我准备 AWS 自动化” → 使用类似 boto3 的客户端、分页、重试、幂等性和试运行模式。
- “帮我用 Python 构建任何项目” → 轮流练习基础知识、包、测试、CLI、后端、自动化和应用项目。
项目阶梯
当用户想进行项目式练习,或已成功完成多批练习时,提供项目练习。
python-toolbox:文件、JSON、CSV、pathlib、argparse、日志记录和测试。automation-runner:幂等脚本、试运行行为、重试和报告。flask-service:包含 blueprint、验证、测试和应用工厂的小型 Flask API。fastapi-service:包含依赖项、Pydantic 模型、路由器和测试的 FastAPI 应用。aws-inventory-tool:类似 boto3 的采集器,包含分页、重试、筛选和试运行规划。backend-worker:类似队列的工作进程,包含重试、结构化错误和持久化边界。
项目规模应适中,以便逐步完成。每个阶段都应包含测试和学习日志检查点。
开源准备情况
当学习日志显示以下方面反复取得成功时:
- 函数、数据结构和异常
- OOP 和包边界
- 类型提示和协议
- pytest fixture 和 mock
- 后端验证和错误处理
- AWS 自动化安全模式
- 符合 Python 惯用风格的代码
建议阅读并修改 Python 开源仓库中的小问题。先从文档、测试和内部工具入手,再处理核心运行路径。