KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA

课程导读 · Python 概念课 — keel 龙骨

Python 概念课:把应用课抛出的概念讲清楚 的参考信息:课程导读 · Python 概念课

当应用课里的某个概念让你推不下去时,来这里读一页专门讲清它的短参考页

你现在的起点

先花一分钟对一下。如果下面四条你都能说清,这门课可以跳过:

  1. b = a 之后改 b 的内容,a 会不会跟着变?为什么?
  2. 一个函数里写了 total = total + 1,为什么报「局部变量没有值」?
  3. 类上写了 retries = 3,实例又赋了一次 5。这些值各存在哪里?
  4. @property 为什么能拦住赋值?它和普通方法差在哪一条上?

只要有一条答不上来,往下读。这门课不要求你先读完应用课——但它是为"已经在读应用课、某一处卡住了"的读者写的。

一条能走通的学习路径

名字与对象        00 一切从「名字是标签」开始
  ↓
作用域          01 名字在哪一层、什么时候才绑上值
  ↓
属性查找        02 点号后面那一步到底在问谁
  ↓
描述符          03 02 页里那两档凭什么生效

四页,每页 4–6 分钟。 前三页是主题概念(应用课把它们当章节主题讲),第四页是衍生概念——它服务于"属性查找",是理解 property、方法绑定与 __slots__ 的前提。

页面地图

页 关键问题 读完你能说出什么
00 名字与对象 = 到底做了什么?「改」什么时候会波及别人? 一句话说清名字与对象的关系,并由此解释可变默认参数、深浅拷贝、元组 +=
01 作用域 名字归属是谁决定的、什么时候定? 四层查找的顺序与它为什么在编译期就定死了;UnboundLocalError 与「类体读不到」各自的根
02 属性查找 obj.x 会依次问哪几个地方? 完整顺序表,以及"实例遮蔽类属性"就是两个字典的先后这个判断
03 描述符 property 凭什么排在实例字典之前? 一个只作用于单个属性的钩子怎么写,以及方法为什么自动带 self

这门课怎么读

前置要求

实验环境说明

进入 keel 阅读