15 课讲义 + 265 道自动判分练习 + 4 个可验收项目, 为"已经会写 Java、想在两周内用 Python 干活"的人重排的一条最短路径。 判分器只用标准库,克隆下来零依赖就能跑。
会写 Java 的人学 Python,六到七成教材内容在讲他已经会的东西:什么是变量、什么是 for、
什么是接口。这套材料把它们全部砍掉,只保留 Python 相对 Java 的真正增量 ——
推导式、生成器、装饰器、上下文管理器、鸭子类型、GIL 与并发模型、pandas 的数据心智,
并且每一课都配能立刻判分的练习,而不是"读完感觉自己会了"。
- 目标场景:爬虫 / 自动化脚本 / 数据处理
- 节奏:14 天 × 每天 3 小时 45 分(约 52.5 小时),见 14 天冲刺方案
- 也可按 4 周 × 每天 2 小时的宽松版走,两套排期共用同一批材料
| 原教程内容 | 处理 | 理由 |
|---|---|---|
| 环境安装 / 变量 / 分支 / 循环 | 压成 L01 一课 | 你不需要有人教你什么是循环,只需要知道 Python 的写法差异 |
| Web 前端(HTML/CSS/JS/Vue) | 砍 | 后端工程师的短板不在这里,投入产出比最低 |
| Linux 命令行 | 砍(留一页备忘) | 本机练习用不上 |
| SQL 语法教学(DDL/DML/DQL/DCL) | 砍语法,只留 L13 的 Python 接库 | 后端天天写 SQL,这是存量优势不是增量 |
| Django 逐步教程 | 砍成 P4 项目的选做参考 | 框架心智与 Spring 同构,读官方文档比读二手教程快 |
| 机器学习 10 篇 | 砍 | 需要的是数学和 numpy,属于第二阶段 |
| 数据分析 15 篇 | 压成 L15 一课 | 后端日常够用即可 |
| 各类随笔、公开课、几百张配图 | 砍 | 认知负荷高、信息量低 |
砍掉的部分大约省下 30 小时,全部换成了练习和项目的时间。
每课 90 分钟:读 40 分钟 → 练 50 分钟。练习必须跑到全绿才算过。
| 课 | 主题 | 对应原文 |
|---|---|---|
| L01 | 缩进 / 动态类型 / 数值与取模 / 真值 / 分支循环 / for-else |
Day01–07 |
| L02 | list / tuple / dict / set、切片、推导式 | Day08–13 |
| L03 | 字符串方法、f-string、正则、datetime |
Day11、30 |
| L04 | 参数家族、*args/**kwargs、LEGB、lambda、高阶函数 |
Day14、16 |
| 课 | 主题 | 对应原文 |
|---|---|---|
| L05 | self、魔术方法、@property、ABC、dataclass、MRO |
Day18–20 |
| L06 | try/except/else/finally、with、自定义上下文 |
Day21 |
| L07 | 迭代协议、生成器、yield、itertools / functools |
Day17、31 |
| L08 | 装饰器、类型注解、PEP 8、常见坑 | Day17、31、番外篇 |
| L09 | 模块与包、pip、venv、pyproject、项目结构 |
Day14、22、91 |
| 课 | 主题 | 对应原文 |
|---|---|---|
| L10 | 读写文本 / JSON / CSV / Excel、编码坑 | Day22–25 |
| L11 | requests、HTML 解析、robots 与反爬常识 |
Day61–62、64 |
| L12 | GIL、threading、multiprocessing、asyncio |
Day63、番外篇协程 |
| L13 | pymysql / SQLAlchemy、连接池、防注入、ETL |
Day44 |
| L14 | pytest、logging、profile、代码检查 |
Day96、番外 PEP8 |
| 课 | 主题 | 什么时候学 |
|---|---|---|
| L15 | ndarray / DataFrame 最小可用集 | 要做数据处理时,或在 P3 项目里现学现用 |
学完对应阶段就开工,不要等 15 课全看完。
| 项目 | 用到的课 | 产出 |
|---|---|---|
| P1 日志分析 CLI | L01–L09 | 统计 Nginx access.log 的命令行工具:PV/UV、状态码分布、Top-N URL、慢请求,带 argparse 和自写测试 |
| P2 数据采集入库 | L10、L11、L13 | 抓公开接口 → 清洗去重 → 写 SQLite/MySQL,断点续传 |
| P3 报表与数据体检 | L10、L15 | 把 P2 的数据汇成 Excel/CSV 报表,含缺失值、异常值告警 |
| P4 接口服务(选做) | 全部 | FastAPI 起一个 CRUD 接口,带 pytest 与类型注解 |
每个项目给的是需求 + 验收测试,不是步骤教程。验收这样跑(check.py 只管课程练习,不含项目):
python projects/P1-日志分析命令行/verify.py app.py # 做完后判分 python check.py --solution # 先确认题库完好:265/265
git clone https://github.com/MGlovee/python-for-java-devs.git cd python-for-java-devs python check.py --solution # 1. 自检:参考答案应当 265/265 全绿 python progress.py # 2. 看进度、今天该复习哪几张卡 python check.py L01 # 3. 做 drills/L01/exercises.py,反复判分直到 16/16 python progress.py read L01 # 4. 闪卡过完打卡
固定的每日节奏:回忆 → 读 → 练 → 打卡,别自己发明顺序。
python progress.py start L03 # 标记开始某课 python check.py L03 -v # 逐条看每个测试 python check.py L03 --solution # 怀疑题目有问题时,验参考答案 python progress.py reset L03 # 重来某课
命令里的
python在 Windows 上通常也可以写成py。
依据都写在 how-to-learn.md 里,一句话版:
- 重读和划重点是低效用学习(Dunlosky 2013 综述),只有提取练习和间隔分布是高效用。 所以每课开头有"先答 3 题"、每课配闪卡,而不是给你漂亮的排版。
- 样例渐隐(worked-example fading):每课练习分三段 —— 挖空 → 半开放 → 只给需求。 比一上来就独立写题省一半认知负荷。
- 即时反馈:判分器零依赖(没装 pytest 也能跑),红绿立刻告诉你差在哪。
- 交错练习:L02/L03 的题故意混排 list/dict/str,相似内容混着练记得更牢。
- 间隔重复:
progress.py按 D+1 / D+2 / D+4 / D+7 点名该复习的闪卡。
| 项 | 要求 |
|---|---|
| Python | 3.10+(在 3.12 / 3.14 上实测通过) |
| 第三方库(可选) | L15 需要 numpy、pandas;P3 需要 pandas(可选 openpyxl 导 Excel) |
pytest(可选) |
装了就用真 pytest 跑;没装时判分器自动挂载 _pytest_shim.py |
L01–L14 的练习只用标准库,不装任何东西也能全绿。
.
├── lessons/ L01…L15 讲义,每课一页
├── drills/ L01…L15 exercises.py 工作表 / test_*.py 考官 / solution.py 参考 / worked_example.py 样例
├── cards/ l01…l15.md 间隔重复闪卡
├── projects/ P1…P4 项目需求与验收,各自带 verify.py 与 example/ 参考实现
├── docs/
│ ├── PLAN-14-DAYS.md 14 天冲刺排期与取舍
│ ├── how-to-learn.md 学习机制说明与证据
│ └── java-to-python.md Java → Python 对照速查表
├── check.py 判分器(标准库实现,兼容 pytest 语法)
├── progress.py 进度与间隔重复排期
├── tools/linkcheck.py 文档本地链接自检
├── _pytest_shim.py 没装 pytest 时的替身
└── progress.json 个人进度(自动生成,已加入 .gitignore)
中文乱码? 讲义里的示例会打印中文。Git Bash 先 export PYTHONUTF8=1,
PowerShell 先 chcp 65001。Python 本身没问题,是终端代码页的事。
check.py 能一次跑多课吗? 不能,check.py L01 L02 会被判定为非法参数;
不带参数则跑全套 265 题。
想看某题为什么红? 加 -v 逐条列出;只盯第一条,后面的多半是连锁失败。
卡住了怎么办? 卡 15 分钟以上才看 solution.py;看完必须合上文件凭记忆重写 ——
照抄一遍通过率 100%、记住 0。
讲义是对 jackfrued/Python-100-Days 的系统性重写与压缩:保留其知识脉络,重排顺序、砍掉冗余、补上练习与判分。 每课末尾的"回原文"链接都指向上游对应文件。
上游仓库未声明开源许可,本项目不复制其正文,只做摘要式笔记并链接回原文; 如原作者对任何内容有异议,请提 issue,会立即处理。详见 NOTICE.md。
本仓库的代码(判分器、练习、项目、脚本)以 MIT 发布,见 LICENSE。 讲义与闪卡为学习笔记,版权归原作者与笔记作者共同所有,仅限个人学习使用。