mcpField
P
python-practice

python-practice

github.com/nrayyagari开发089 次安装27 周前更新
代码仓库

关于 python-practice

用于生成练习并支持调试、代码审查和项目式练习的 Python 学习技能,面向希望掌握 Python 基础、后端、CLI、测试与自动化的学习者。

主要功能

  1. 01按多种模式生成练习
  2. 02依据学习情况调整练习
  3. 03涵盖后端与自动化方向
  4. 04通过测试验证练习
  5. 05审查答案并更新学习日志

适用场景

  1. 01练习 Python 基础知识
  2. 02调试 Python 练习
  3. 03准备后端或 AWS 自动化工作
  4. 04审查练习答案

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nrayyagari/python-practice-skill --skill python-practice

安装后在 Claude Code 中输入/python-practice确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
.gitignore
evals/
prompts.md
references/
python-learning-guide.md
review-guide.md
learning-log.md
topic-catalog.md
practice-tracks.md
adaptive-learning.md
exercise-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.md
  • learning-log.md
  • .gitignore

创建练习时,将其放入该仓库下的日期文件夹中。文件夹名称使用以下格式:

D-mmm-YY

示例:

  • 3-may-26
  • 30-apr-26
  • 12-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-arg
  • missing-return
  • type-confusion
  • exception-swallowed
  • path-string-not-pathlib
  • mock-too-broad
  • fixture-scope-confusion
  • fastapi-dependency-confusion
  • flask-global-state
  • boto3-pagination-missing
  • aws-retry-missing
  • iam-action-too-broad
  • not-pythonic-loop

澄清问题示例:

  • “什么时候应该使用 dataclass?”
  • “什么时候该使用 mock,什么时候该使用 fake?”
  • “这里为什么要用 pathlib?”
  • “在 FastAPI 中应该把验证逻辑放在哪里?”
  • “什么时候应该使用 Flask blueprint?”
  • “如何处理 boto3 分页?”
  • “怎样才能让脚本安全地重复运行?”

如果同一类别的澄清问题出现两次,下一批练习必须包含一项能迫使学习者区分这两者的对比练习。

第 11 步:交互式帮助
  • “我卡住了” → 给出提示,而不是答案。提示应结合之前犯过的错误。
  • “给我看答案”或其他明确请求 → 提供最精简的完整答案,并解释关键思路。
  • “解释这个概念” → 用一个简短的 Python 示例和一个实际用例进行解释。
  • “为什么要做这项练习?” → 指出学习日志中的规律和目标领域。
  • “增加难度” → 增加针对边界情况、失败路径、验证、幂等性或 mock 的测试。
  • “降低难度” → 聚焦于一个概念,并移除外部依赖。
  • “像审查后端 Python 代码那样审查这段代码” → 着重关注边界、验证、错误处理、测试和 API 形态。
  • “帮我准备 AWS 自动化” → 使用类似 boto3 的客户端、分页、重试、幂等性和试运行模式。
  • “帮我用 Python 构建任何项目” → 轮流练习基础知识、包、测试、CLI、后端、自动化和应用项目。

项目阶梯

当用户想进行项目式练习,或已成功完成多批练习时,提供项目练习。

  1. python-toolbox:文件、JSON、CSV、pathlib、argparse、日志记录和测试。
  2. automation-runner:幂等脚本、试运行行为、重试和报告。
  3. flask-service:包含 blueprint、验证、测试和应用工厂的小型 Flask API。
  4. fastapi-service:包含依赖项、Pydantic 模型、路由器和测试的 FastAPI 应用。
  5. aws-inventory-tool:类似 boto3 的采集器,包含分页、重试、筛选和试运行规划。
  6. backend-worker:类似队列的工作进程,包含重试、结构化错误和持久化边界。

项目规模应适中,以便逐步完成。每个阶段都应包含测试和学习日志检查点。

开源准备情况

当学习日志显示以下方面反复取得成功时:

  • 函数、数据结构和异常
  • OOP 和包边界
  • 类型提示和协议
  • pytest fixture 和 mock
  • 后端验证和错误处理
  • AWS 自动化安全模式
  • 符合 Python 惯用风格的代码

建议阅读并修改 Python 开源仓库中的小问题。先从文档、测试和内部工具入手,再处理核心运行路径。

评论

支持 Markdown