AI 技术博客
返回首页
Python 基础 19 分钟阅读

下一步指引:课程 02-10 学习路线图

Python学习路线课程规划实践建议

引言

本文是第十章(阶段测验与查漏补缺)的第九篇,也是整门课程 01 阶段一(第 1-10 章)的收尾”导航文”。走到这里,你已经通过了变量与运算符、流程控制、函数、字符串与正则、容器、文件与异常、面向对象、命令行工具八场专题测验,又做完本批前几篇的阶段测验、常见坑总结、代码风格审查、性能初体验、调试训练与通讯录项目,最后还有本篇之后的收官综合测验。也就是说:Python 的语法地基、工程习惯、测试意识和性能直觉已经齐备,接下来的问题是——然后呢?

本篇解决的就是这个”然后呢”:本站课程体系共 10 门课、300 章、约 3000 篇文章,依据总纲「课程结构一览」与「学习路径」段落,为读完课程 01 的你规划课程 02-10 的学习路径。我们不讲空泛的”努力加油”,而是给出三条主线:算法线、系统线、方向线;对每门课给出学习目标、与课程 01 的知识衔接点、建议节奏和配套实践(LeetCode 刷题路线、GitHub 项目练习、开源贡献入门)。文末的表格汇总所有课程的定位与前置要求,方便你打印出来贴在桌前。

读者前提:本文假定你已完成课程 01 阶段一(第 1-10 章)并掌握全部练习。需要提醒的是,课程 01 本身还有三个阶段——第二阶段高级语法与函数式(11-18 章,迭代器、装饰器、并发、asyncio)、第三阶段标准库深潜与工程化(19-24 章,网络、测试、性能、打包)、第四阶段领域应用(25-30 章,数据处理、爬虫、FastAPI)——总纲的学习路径把「课程 01→03」看作地基,因此下文所有路线都以”学完课程 01 全部 30 章”为正式起点。你可以按本篇的三条主线先把全局刻进脑子里,再回到第 11 章依次推进。

三条主线:总纲给出的全局顺序

在动手规划之前,先理解总纲「学习路径」段落的一句话——这是整个体系的拓扑图:**课程 01→03 是地基;02 与 06 并行提供算法与数学;04/05 提供工程能力;06→07→08 深入 AI;09 紧跟大模型前沿;10 全程穿插、最后系统化。**把它翻译成三条主线:

  • 主线一:算法线(课程 02 数据结构与算法,350 篇)。这门的核心是抽象能力:把问题翻译成数据结构与算法,并用复杂度(complexity)分析好坏。它是 LeetCode 刷题与一切面试的底气。
  • 主线二:系统线(课程 03 计算机系统基础,220 篇)。这门回答”程序到底怎么跑”:从组成原理、操作系统、网络到编译与底层。它把语言层面的知识(变量、字节、文件、进程)钉在真实的硬件与系统语义上,防止你成为只会写玩具代码的”语言使用者”。
  • 主线三:方向线(课程 04-10,共 2130 篇)。前端(04)、后端(05)、数学与机器学习(06)、深度学习(07)、AI 应用(08)、大语言模型(09)、安全与职业(10)。它是职业出口,但依赖地基。

三条线不是先后排队的关系:总纲把算法线(02)与数学线(06)设计成可并行推进的”左右手”,把 03 放在地基位置,把方向线放在最后。我们按主线逐一拆解。

动身之前:补齐课程 01 的剩余三阶段

严格说,路线图的前置条件是完整的课程 01。剩余 20 章里与你后续关系最密切的是:迭代器与生成器(11 章)和装饰器(12 章)——课程 02 的惰性求值、课程 06 的缓存设计都要用到;测试与质量(22 章)的 pytest 与覆盖率(coverage)概念在每一门后续课的工程实践中复用;网络编程(21 章)是 04/05/09 的直通桥;数据处理(25 章)则直接为 06 的机器学习铺垫。建议节奏:每天 1 篇正文 + 每章测验,20 章约 3-4 个月完成;其中 17-18 章(并发与 asyncio)和 24 章(打包)允许暂时跳读,需要用到时候回头补,因为它们与三条主线的前 20 章依赖较弱。

主线一:算法线(课程 02,350 篇)

学习目标:五阶段递进——算法基础(复杂度分析、递归、排序、二分、双指针、滑动窗口)→ 线性结构与字符串(数组、链表、栈、队列、哈希表、KMP、Trie)→ 树与图(遍历、二叉搜索树、堆、并查集、最短路)→ 动态规划与进阶技巧(背包、区间 DP、单调栈)→ 竞赛与面试冲刺(典型题解 30 题、刷题路线)。

与课程 01 的衔接点:递归与函数抽象是第 4 章的内容(第 6 篇讲递归、第 2 篇讲作用域);列表、字典、集合与推导式是第 3、6 章的内容;哈希表一章会在 dict 的既有心智上追加”哈希函数设计”一层,相当于把第 6 章”字典为什么快”的直觉形式化。链表、树、图等新数据结构会从头讲起,不需要你先学任何东西。unittest 习惯(第 9 章)直接迁移为刷题时的本地验证工具。

建议节奏:每周 1 章(10 篇)+ 每天 30-60 分钟刷题;全课程约 35 周,量级接近一年。配套实践:LeetCode 从”数组/字符串·简单”档起步(路线见后文专节),每学一章数据结构就补该标签的中等题,形成”读书学原理、刷题练手感”的双循环。

主线二:系统线(课程 03,220 篇)

学习目标:四阶段递进——组成原理(进制与位运算、CPU 与指令集、存储层次、虚拟内存、汇编入门)→ 操作系统(进程线程、调度、死锁、文件系统、系统调用)→ 计算机网络(TCP/IP、TCP 三次握手与拥塞控制、HTTP/1.1/2/3、DNS、HTTPS)→ 编译与底层(编译流程、词法与语法分析、虚拟机与 JIT 思想、二进制分析)。

与课程 01 的衔接点:位运算与进制是第 2 章第 8 篇的内容,课程 03 会在”补码、掩码、字节序”的层次上把它用满;布尔逻辑(第 3 章)对应 CPU 里的门电路与条件跳转;文件与路径(第 7 章)对应文件系统的 inode 与挂载语义;命令行工具(第 9 章)的退出码概念会与进程 exit status 对上号。没有这些,系统课的知识就是悬空的”黑话”。

建议节奏:每周 1 章,约 22 周,量级半年到八个月。配套实践:准备一台 Linux 环境(虚拟机或云服务器均可),每学一个概念就用命令行验证:ps/top 看进程、strace 看系统调用、curl -v 观察 HTTP 报文——把第 7 章学到的路径直觉延伸到系统视角。

主线三:方向线(课程 04-10,共 2130 篇)

方向线内部仍然分科,按总纲顺序逐门给出目标、衔接与节奏。

课程 04 前端开发(300 篇)

学习目标:HTML/CSS/JS 三件套 → Vue/React 框架与工程化 → 性能与可视化 → 全栈(Node、部署、SSR)。衔接点:前端与 Python 语法无直接依赖,但课程 01 建立的分层思考(第 8 章把”数据与界面分离”练过)和调试方法论(第 1 章 pdb、第 9 章 unittest 的”先证明哪里错了”)直接迁移。节奏:每周 1 章约 30 周。实践:用第 9 章的接口设计习惯给后端写前端消费页面,前 10 章不必。

课程 05 后端工程与数据库(330 篇)

学习目标:SQL 与数据库 → FastAPI/Go/Spring 后端框架 → 分布式与中间件(消息队列、Redis、分布式锁)→ 云原生与部署(Docker、Kubernetes、CI/CD)→ 系统设计(短链、秒杀、消息系统)。衔接点:第 9 章的命令行工程结构(argparse + logging + 退出码 + 测试)就是 FastAPI 项目的骨架原型;第 7 章的 JSON 文件读写升级为数据库读写;第 8 章的 OOP 分层(实体、仓库、服务)直接对应后端分层架构。节奏:每周 1 章约 33 周。实践:把通讯录管理系统的数据层从 JSON 文件换成 SQLite(第 118 章起会教 SQL),是极好的桥接项目。

课程 06 数学基础与机器学习(400 篇)

学习目标:高等数学(配损失函数与梯度下降场景)→ 线性代数(配 PCA、推荐系统)→ 概率与统计(配回归与假设检验)→ 机器学习核心算法(线性模型、kNN、决策树与集成、聚类、降维)→ 特征工程与实战 → MLOps 综合专题。衔接点:第 6 章的词频统计(第 8 篇)就是”特征构造”的最朴素形态;第 7 章 CSV/JSON 读写是数据加载环节;第 4 章的函数抽象让”模型即函数”的理解顺滑。节奏:这是篇数最多的课,每周 1 章约 40 周,可与课程 02 并行推进(总纲明确说 02 与 06 并行)。实践:把第 25 章数据处理练熟,再在自己清理过的真实数据集上跑通一个线性回归,形成”清洗→建模→评估”闭环。

课程 07 深度学习(350 篇)

学习目标:神经网络基础(反向传播手推+代码、优化器、正则化)→ CNN/RNN/注意力 → 训练工程(数据管线、分布式、超参搜索)→ Transformer 精读。衔接点:硬前置是课程 06 的线性代数、概率与 ML 算法部分——没有反向传播的微积分直觉会寸步难行;PyTorch 只是工具,前 30 章的 Python 功力决定你能看懂多少框架源码。节奏:每周 1 章约 35 周,务必在 06 完成后再启动。实践:用课程 01 的虚拟环境与打包知识管理 PyTorch 依赖,别让环境问题浪费学习时间。

课程 08 AI 应用方向(300 篇)

学习目标:计算机视觉(分类、检测、分割)→ NLP 与语音 → 推荐系统(召回、排序、CTR)→ 强化学习(DQN、PPO)。衔接点:前置为课程 07;第 5 章的正则是 NLP 分词与清洗的老朋友。节奏:每周 1 章约 30 周。实践:每个方向挑一个公开数据集跑通基线,把第七篇学过的”先正确后优化”流程用于模型调试。

课程 09 大语言模型与工程实践(280 篇)

学习目标:LLM 原理(Tokenization、缩放定律、上下文学习)→ Prompt 与 RAG → 微调与对齐(LoRA、RLHF/DPO)→ Agent 与工程部署(函数调用、推理引擎、生产架构)。衔接点:RAG 的检索环节吃课程 06 的向量知识,工程环节吃课程 01 的 CLI/JSON/日志/测试全部手艺。节奏:每周 1 章约 28 周。实践:把课程 01 的通讯录或 todo 项目改造成”工具调用”演示——Agent 调用你自己写的函数,是对前九章最好的致敬。

课程 10 安全、前沿与职业发展(170 篇)

学习目标:网络安全(渗透基础、Web 漏洞原理、密码学)→ 前沿专题(云计算、区块链、量子计算、AIGC)→ 面试与职业(简历、算法备战、开源贡献指南、职业规划)→ 论文精读(ResNet、Transformer、BERT、GPT 等十篇经典)。衔接点:全程穿插,但它的 296-298 章(面试与职业)建议在求职前集中学习;第 1 章的环境与第 9 章的打包技能是开源贡献的入场券。节奏:每周 1 章约 17 周。实践:把前九章攒下的所有项目整理成作品集,配合第 297 章的开源贡献指南投出第一个真实 Pull Request。

各课程定位与前置要求总表

课程定位前置要求(含课程 01 衔接)篇数建议节奏
02 数据结构与算法算法线:抽象与复杂度课程 01 全通;重点第 3/4/6 章350每周 1 章 + 每日刷题,约 1 年
03 计算机系统基础系统线:程序如何运行课程 01 全通;重点第 2/3/7 章220每周 1 章,约 8 个月
04 前端开发方向线:Web 界面课程 01 全通(无硬依赖)300每周 1 章,约 8 个月
05 后端工程与数据库方向线:Web 服务课程 01 全通;重点 7/8/9 章330每周 1 章,约 9 个月
06 数学基础与机器学习方向线/基础:数学与 ML课程 01 全通;与课程 02 可并行400每周 1 章,约 11 个月
07 深度学习方向线:AI 核心课程 06 的数学与 ML 部分完成350每周 1 章,约 10 个月
08 AI 应用方向方向线:AI 落地课程 07 完成300每周 1 章,约 8 个月
09 大语言模型与工程实践方向线:LLM 前沿课程 07/08 基础 + 01 工程手艺280每周 1 章,约 8 个月
10 安全、前沿与职业方向线/收官:职业化全程穿插;296-298 章可提前学170每周 1 章,约 5 个月

三列数据(篇数)全部来自总纲「课程结构一览」,节奏按”每天 1 篇、每周 7 篇”折算,完成一门课后留一周复习测验。

学习节奏的总原则

第一,每天的量级:正文 1 篇 + 配套练习 30-40 分钟;算法线额外 30-60 分钟刷题;系统线每周留半天做 Linux 实操。第二,每周的量级:1 个章节(10 篇)+ 1 次章末测验;测验正确率低于 60% 就回到对应篇章重读,这是本站每条内容都配测验的原因。第三,并行规则:任何时刻主线不超过两条——推荐”算法线/系统线二选一 + 方向线之前的地基”组合;总纲给出的 02 与 06 并行是例外,因为二者互为对方的数学/算法底座。第四,总量预期:10 门课约 3000 篇,按每天 1 篇约 8 年,按每天 2 篇约 4 年——这不是劝退,而是提醒你选准方向线、把时间投给与职业目标一致的课程。

配套实践:三件套怎么练

LeetCode 刷题入门路线

LeetCode 是目前最主流的算法练习平台,配合算法线使用:第一阶段(对应课程 02 阶段一)做”数组与字符串”标签下的简单题,把每题都放进下面的标准骨架——先写纯函数,再用本机测试验证,最后才提交:

"""LeetCode 刷题的标准骨架:先写对函数,再在本地验证。"""


def two_sum(nums, target):
    """返回两个下标,使 nums[i] + nums[j] == target。"""
    seen = {}
    for i, num in enumerate(nums):
        complement = target - num
        if complement in seen:
            return [seen[complement], i]
        seen[num] = i
    return []


if __name__ == '__main__':
    assert two_sum([2, 7, 11, 15], 9) == [0, 1]
    assert two_sum([3, 2, 4], 6) == [1, 2]
    assert two_sum([3, 3], 6) == [0, 1]
    print('全部通过')

本机实测输出:

全部通过

这个骨架把第 4 章(函数)、第 6 章(字典)、第 9 章(unittest 断言)全部串起来:刷题不是背解法,而是练习”用纯函数描述逻辑、用测试钉住行为”。第二阶段(对应课程 02 阶段二三)进入链表、栈、队列、哈希表、树的中等题;第三阶段才碰动态规划与图。两条公认的入门清单可以参考:LeetCode 官方精选 75 题(LeetCode 75)与《剑指 Offer》题集,选其中一套做穿,不要两套同时开。

刷题进度当作数据来管理

用手账不如用脚本:把进度记成 CSV,用课程 01 学过的 csv 与 collections.Counter 统计,这本身就是一次第 6、7 章的组合复习。

"""刷题进度表:统计 progress.csv 中各标签已完成的题数。"""

import csv
from collections import Counter
from pathlib import Path

path = Path('progress.csv')
counter = Counter()
with open(path, encoding='utf-8', newline='') as f:
    for row in csv.DictReader(f):
        if row['status'] == 'done':
            counter[row['tag']] += 1

for tag, count in counter.most_common():
    print(f'{tag}: {count} 题')

配合下面的 progress.csv(标签,标题,状态):

tag,title,status
数组,两数之和,done
数组,三数之和,done
链表,反转链表,done
数组,盛最多水的容器,todo
字符串,最长公共前缀,done

本机实测输出:

数组: 2 题
链表: 1 题
字符串: 1 题

每周跑一次这个脚本,比”感觉这周学了不少”诚实得多。

GitHub 项目与开源贡献入门

GitHub 是放作品的地方,也是开源协作(open source collaboration)的入口。三步走:第一步,把本课程做过的 todo 工具、通讯录系统推上 GitHub,README 写清安装与用法,配好 .gitignore 与单元测试,并在仓库里开启 GitHub Actions 跑 python -m unittest discover(该服务真实存在),让每次提交自动验证——这是第 7 章测试知识第一次”无人值守地工作”。第二步,做一次”热身 PR”:GitHub 上的 first-contributions 仓库专门提供零业务逻辑的提交流程演练,走完一次 fork→改→PR 的完整链路。第三步,给真正在用的小项目贡献:在仓库 Issues 页用 “good first issue” 标签筛选入门任务(聚合站 goodfirstissue.dev 也值得收藏),从补文档、补测试用例、改报错信息这类低风险改动开始,比一上来改核心算法容易通过评审。进阶选项是 Google Summer of Code 这类带导师的暑期项目,在校生可以提前一年准备。

易错点与陷阱:路线上的四个坑

  • 贪多求快:同时开三门课,每天三篇,两周后全部烂尾。任何时刻保持”一条主线 + 一个伴读方向”,主线每周至少完成一章。
  • 跳跃式学习:跳过课程 06 直接啃 07 的 Transformer,跳过课程 01 的 11-30 章直接进 02——衔接栏写的”前置”是硬依赖,不是建议。跳过的知识会在 20 章之后以”看不懂”的方式百倍讨回来。
  • 只看不练:读满 100 篇从来不写代码。本站每篇结尾都有练习与思考题,章末有测验,这些是验收标准;测验正确率不足 60% 就回去重读,而不是安慰自己”理解了”。
  • 被平台绑架:要么只刷题不读书(解法背了一堆,原理说不清),要么只读书不刷题(原理都懂,一上机就卡)。算法线与课程 02 必须同步推进,刷题量和阅读量互为验收。

小结

本篇把总纲变成三张可执行的地图:算法线(课程 02)提供抽象与复杂度,系统线(课程 03)提供”程序如何运行”的底层模型,方向线(课程 04-10)按 Web(04/05)、AI(06→07→08→09)、职业化(10)逐门给出目标、衔接、节奏与实践。核心原则只有四条:先补完课程 01 剩余 20 章;任何时刻最多两条主线并行;每天 1 篇、每周查一次进度;绕不开的前置绝不跳。下一篇也是本课程的收官篇:包含 12 道选择题与 4 道编程题的综合测验,全部答完之后,你就可以带着这张路线图出发了。

练习与思考题

  1. 用第 7 章的知识把”每周学习计划”建成一个 CSV(字段:日期、章节、篇数、是否完成),写一个脚本输出本周完成篇数与累计完成篇数,并说出你的输出里哪些数据来自文件、哪些来自统计逻辑(答案导向:文件只存原始记录,统计交给 Counter 或内置 sum——这正是第九章第 7 篇”逻辑与 I/O 分离”原则的又一次应用)。
  2. 写出课程 02 的三个衔接点并说明依赖方向:哪一章的知识是”哈希表”的直接前身?哪一章的知识撑起”递归与分治”?(答案导向:第 6 章 dict 是哈希表前身;第 4 章递归是分治的前身;第 9 章 unittest 为刷题模板提供验证手段。)
  3. 估算题:按每天 1 篇学完 10 门课约需要几年?按每天 2 篇呢?结合自身作息,写下你愿意长期维持的日篇数(答案导向:3000 篇总量,1 篇/天约 8.2 年,2 篇/天约 4.1 年;重在给出你自己的可行数字而非绝对值)。
  4. 上机题:把本篇的 LeetCode 模板改成”反转字符串”(输入 ‘Python’ 输出 ‘nohtyP’),本地跑通后提交到 LeetCode 数组/字符串简单题(答案导向:利用第 5 章切片 s[::-1] 或第 3 章循环双指针都正确;注意 LeetCode 的输入输出格式与本地的断言写法不同,体会”本地验证 + 平台格式”的分工)。