KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
课程导读 · Python 概念课 — keel 龙骨
Python 概念课:把应用课抛出的概念讲清楚 的参考信息:课程导读 · Python 概念课
当应用课里的某个概念让你推不下去时,来这里读一页专门讲清它的短参考页
你现在的起点
先花一分钟对一下。如果下面四条你都能说清,这门课可以跳过:
b = a之后改b的内容,a会不会跟着变?为什么?- 一个函数里写了
total = total + 1,为什么报「局部变量没有值」? - 类上写了
retries = 3,实例又赋了一次5。这些值各存在哪里? @property为什么能拦住赋值?它和普通方法差在哪一条上?
只要有一条答不上来,往下读。这门课不要求你先读完应用课——但它是为"已经在读应用课、某一处卡住了"的读者写的。
一条能走通的学习路径
名字与对象 00 一切从「名字是标签」开始
↓
作用域 01 名字在哪一层、什么时候才绑上值
↓
属性查找 02 点号后面那一步到底在问谁
↓
描述符 03 02 页里那两档凭什么生效
四页,每页 4–6 分钟。 前三页是主题概念(应用课把它们当章节主题讲),第四页是衍生概念——它服务于"属性查找",是理解 property、方法绑定与 __slots__ 的前提。
页面地图
| 页 | 关键问题 | 读完你能说出什么 |
|---|---|---|
| 00 名字与对象 | = 到底做了什么?「改」什么时候会波及别人? |
一句话说清名字与对象的关系,并由此解释可变默认参数、深浅拷贝、元组 += |
| 01 作用域 | 名字归属是谁决定的、什么时候定? | 四层查找的顺序与它为什么在编译期就定死了;UnboundLocalError 与「类体读不到」各自的根 |
| 02 属性查找 | obj.x 会依次问哪几个地方? |
完整顺序表,以及"实例遮蔽类属性"就是两个字典的先后这个判断 |
| 03 描述符 | property 凭什么排在实例字典之前? |
一个只作用于单个属性的钩子怎么写,以及方法为什么自动带 self |
这门课怎么读
- 按需读,别通读。 应用课里哪一句卡住,就从那一句的链接点进来;每页末尾都会指回对应章节。
- 代码块请真的贴进 REPL 跑一遍。 这一课的形态证据全是 REPL 会话——看一眼和自己敲一遍,对"名字 vs 对象"这种抽象概念的差别很大。
- 不要背定义。 每页最后那句「这一页改变了你的哪个判断」才是要带走的;它是一句可以当场执行的动作。
前置要求
- 能打开一个终端、能在里面敲
python进入交互式环境(不会的话先看基础课); - 会用
list/dict/def/class这几样就够,不需要写过任何项目。
实验环境说明
- 页面里的 REPL 会话与报错原文都来自真实的运行记录,环境是 CPython 3.13.14(Windows)。
- 但版本会带来措辞差异:
id()的编号每次都不同;UnboundLocalError、__slots__的报错文本在旧版本上是另一句话。
读的是形状与字段,不是那一串数字。 - 涉及"这行代码实际做了什么"的部分,本课只讲你在 REPL 里能亲眼看到的那一层;
更深的字节码与内存布局不在本课范围内。