KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
Python 概念课:把应用课抛出的概念讲清楚 — keel 龙骨
Python 概念课:把应用课抛出的概念讲清楚 的参考信息:Python 概念课:把应用课抛出的概念讲清楚
短页参考 · 概念从哪来、是什么、解决什么问题、长什么样
《Python 工程基础》 是按章节一路往下写的:一章讲数据结构与可变性,一章讲函数与 LEGB,一章讲闭包与装饰器,一章讲类与属性。它假定你已经在写 Python,直接把判断讲给你听。
但每一章都会抛出概念——名字与对象、作用域、属性查找、描述符。这些概念在正文里是按"够用"的深度出现的:讲函数时说清"LEGB 是查找顺序",就够你理解闭包了。
这门课补的就是那一段:当应用课里的某个概念让你推不下去、或者你只是想知道它到底是怎么回事时,来这里读一页。
它刻意很短。AI 已经替你解决掉了大部分语法层面的麻烦,你不需要跟着再读一遍 CPython 源码——你需要的只是知道这个概念怎么产生的、它是什么、它解决什么问题、它面对什么需求、它具体长什么样。把这五件事弄清楚,回头再看应用课里那些面向工程取舍的判断,会顺得多。
这门课是什么,不是什么
| 它是 | 它不是 |
|---|---|
| 参考页:一页一个概念,4–6 分钟读完 | 不是教程:没有从零讲起的引导(那是基础课) |
| 概念的来历与形态:它为什么需要存在、长什么样 | 不是原理深挖:不读 CPython 源码、不推字节码细节 |
| 应用课的下钻入口:从被卡住的那一句点进来 | 不是应用课的替代:写法建议、工程取舍仍在应用课 |
概念地图
| 概念 | 类型 | 回答什么 | 对应应用课 |
|---|---|---|---|
| 00 名字与对象 | 主题概念 | 为什么 b = a 之后改 b,a 也变了;可变与不可变分的是什么界 |
01 章、02 章 |
| 01 作用域 | 主题概念 | 为什么「上面能读、下面报未绑定」;类体里的名字为什么读不到 | 02 章、03 章 |
| 02 属性查找 | 主题概念 | 实例属性和类属性到底存在哪;__getattr__ 什么时候才被调用 |
04 章 |
| 03 描述符 | 衍生概念(服务于「属性查找」) | property 凭什么能拦住赋值;方法为什么自动带 self |
04 章 |
主题概念是被应用课当作章节主题讲的东西;衍生概念是为了理解某个主题概念而必须先弄懂的东西——不懂"描述符",就说不清 property、方法绑定与 __slots__ 凭什么生效。每一页都会在末尾列出它带出的衍生概念。
怎么读
- 按需读:应用课读到哪一句卡住,就从那一句旁边的链接点进来;每页最后都会指回去。
- 也可以当最小地图读:四页按顺序读一遍约 20 分钟,你会拿到这四个概念之间的位置关系。
- 不要背。每一页的重点不是定义,而是"这一页改变了你的哪个判断"——那句话才是要带走的。
与相邻课程的分工
- 《Python 工程基础》:同源课。它管"怎么写对"(写对参数、写对类、避开语义上的雷),本课管"这个概念是什么"。同一个概念在两边的深度不同——应用课讲到"够你做判断"为止,本课讲到"你知道它是什么、从哪来"为止。
- 《Python 生成器与 yield 详解》:那边把"暂停与恢复"这条时序线单独讲透,本课不重复它的执行轨迹演算。
- 《Python 拔高》:那边是生产代码里的写法与抽象;本课是它们脚下那四个概念。
关于证据口径
页面里的 REPL 会话与报错原文都来自真实的运行记录:
- 环境:CPython 3.13.14(Windows)。
- 但版本与机器会带来差异:
id()的编号、报错的措辞(Python 3.11 之前UnboundLocalError是另一句话)、__slots__的报错文本都会变。要读的是形状与字段,不要背某一串数字。 - 少数几处为了排版把多行定义压成一行(例如
class Base: kind = "base"),输出没有改动。
课程导读(起点自检、阅读方式)见 course/README.md。