章节摘要:本章解决两个问题——把 Python 环境搭起来、跑起第一个程序;然后立刻拆开机器,看清"一切皆对象"与"名字绑定"这两件决定你后续所有理解的事。读完本章,你不会再把赋值误解为拷贝,也开始会用
id()和is做实证。
阅读完本章,你应当能够:
type 与 id 验证"一切皆对象",包括函数和类本身;is 与 == 的差别,以及小整数缓存的成因;dis 反汇编输出的大致结构。解释器不是黑魔法,它是一条"源代码 → 字节码 → 对象操作"的流水线;你看不见的每一步,都在操纵对象与名字。
安装、版本策略、REPL 与脚本两种运行方式,以及第一段带 id() 实验的代码。
PyObject 的三要素(身份、类型、值),type 的自举现象,以及小整数缓存等解释器优化。
本册最重要的一节。赋值、传参、别名、is 与 ==,以及可变对象别名带来的经典坑。
1.1 让你能跑代码,是工具箱;1.2 建立对象世界观;1.3 把世界观落到赋值与传参的日常操作上。三者层层递进:
环境与运行方式(1.1) │ 没有它一切是纸上谈兵 ▼ 对象 = 身份 + 类型 + 值(1.2) │ 名字只是指向对象的标签 ▼ 赋值/传参/别名的全部行为(1.3)
前置:会用命令行、能编辑文本文件即可,零编程基础可读。
读到这里可以先给自己做个小检验:不看讲义,向同事(或对着空气)解释一句 b = a 之后 id(b) == id(a) 为什么成立。能说清"赋值是贴标签、标签指向堆上的对象",本章的三节就算吃透了;说不清就回到 1.3 节的实验再跑一遍——对象模型这层地基,值得花双倍时间夯实,后面八章全部踩在它上面。
为后续铺垫:第 2 章容器的可变性差异、第 4 章"类也是对象"、第 8 章 GIL 与对象内存管理,全部建立在本章的对象模型之上。