Learn Python the Right Way

副标题:How to Think Like a Computer Scientist(像计算机科学家一样思考)

一本基于 GNU Free Documentation License 发布的开源 Python 入门教材,由 Ritza 出品,前身是 Allen B. Downey 经典的 How to Think Like a Computer Scientist。David Beazley 作序。

核心定位

  • 不是语法手册,是思维训练——以 Python 为载体,教读者”像计算机科学家一样思考”
  • 平衡实用性与概念深度:Python 语法简单,初学者能快速做出东西,同时逐步引入抽象、数据结构、OOP 等 CS 核心概念
  • 教学法特色:每章配 Glossary(术语表)+ Exercises(练习题),附录有调试指南和常见错误集
  • 完全开源:GNU FDL 1.3 许可,可自由复制、分发、修改

全书结构(28 章 + 5 附录)

第一部分:编程基础(Ch 1-7)

章节主题核心概念
1The way of the program程序是什么、三类错误(语法/运行/语义)、实验式调试、形式语言 vs 自然语言
2Variables, expressions and statements值与类型、变量命名、关键字、表达式求值、运算符优先级、字符串操作、输入
3Hello, little turtles!海龟图形(turtle)、for 循环、实例化
4Functions函数定义与调用、执行流、局部变量、参数与返回值
5Conditionals布尔类型、比较运算符、逻辑运算符(and/or/not)、短路求值、真值表、布尔代数化简
6Fruitful functions返回值的函数、增量式开发、单元测试、组合
7Iterationwhile 循环、for 循环、牛顿迭代法、枚举、break/continue

第 3 章的 turtle 是亮点:用图形化反馈让初学者立即看到”代码运行的结果”,比纯文本输出更有成就感。

第二部分:数据类型(Ch 8-14)

章节主题核心概念
8Strings字符串是序列、索引、切片、遍历、字符串方法、字符串是不可变的
9Tuples元组打包/解包、不可变性、元组作为返回值
10Event handling事件驱动编程、回调函数、GUI 交互基础
11Lists列表是可变序列、列表方法、列表遍历、嵌套列表、列表与字符串互转
12Modules模块导入、命名空间、标准库、random/math/turtle 等常用模块
13Files文件读写、文本行处理、异常处理初步
14List Algorithms搜索(线性/二分)、排序、列表推导、归并、去重

第三部分:面向对象(Ch 15-17, 22-24)

章节主题核心概念
15Classes and Objects — the Basics类与实例、属性、方法、__init__ 构造函数
16Classes and Objects — Digging deeperself 参数、特殊方法(__str__ 等)、运算符重载
17PyGame用 Pygame 做游戏:精灵、碰撞检测、游戏循环
22Even more OOP类变量 vs 实例变量、私有属性、静态方法
23Collections of objects对象集合、聚合关系
24Inheritance继承、多态、方法重写、super()

PyGame 一章是本书特色:把 OOP 概念落地到游戏开发实践,学生可以做出可玩的东西,比纯理论讲继承更有体感。

第四部分:进阶 + 数据结构(Ch 18-21, 25-28)

章节主题核心概念
18Recursion递归思想、基线条件、递归 vs 迭代、分形
19Exceptionstry/except、异常类型、自定义异常、防御式编程
20Dictionaries字典的键值对、哈希、字典方法、用字典计数
21A Case Study: Indexing your files实战:用字典做文件索引(倒排索引思想)
25Linked lists链表实现、节点类、遍历、插入/删除
26Stacks栈的 ADT、push/pop、括号匹配、中缀转后缀
27Queues队列的 ADT、enqueue/dequeue、环形缓冲区
28Trees树的结构、前/中/后序遍历、表达式树、动物识别树

附录

  • A: Debugging — 分场景调试指南(语法错、运行错、语义错、死循环、无限递归等)
  • B: Workbook — 五大能力维度、发邮件、写 Web 服务器、数据库等扩展实践
  • C: Ubuntu Python 开发环境配置
  • D: 如何定制和贡献本书
  • E: Tips, Tricks, and Common Errors — 常见错误合集

核心观点摘录

1. 编程的本质是问题求解

“Programming is the art of telling another human what one wants the computer to do.”
(序中引用 Donald Knuth)

程序的首要读者是人,其次才是机器。写代码时要考虑将来读代码的人。

2. 三类错误 & 实验式调试

  • 语法错误(Syntax errors):违反语言规则,解释器直接报错
  • 运行错误(Runtime errors):语法正确但运行时出问题(除零、索引越界等)
  • 语义错误(Semantic errors):程序能跑但结果不对——最难调试的一类

实验式调试方法:提出假设 → 设计实验验证 → 根据结果修正假设。这和科学方法是一样的。

3. 增量式开发(Incremental development)

第 6 章提出的核心方法:

  1. 从一个能运行的小程序开始
  2. 每次只加一小段代码
  3. 加完立即测试
  4. 重复直到完成

好处:每步都知道错误在哪里,避免面对一个大而全的 bug 无从下手。

4. Python 的设计哲学

  • 可读优先:“Pythonic” 的代码首先是清晰的
  • ** batteries included**:标准库覆盖大量常用场景
  • 多范式支持:过程式、面向对象、函数式都能用

5. 调试附录的金句

“If you have a big hairy expression and it doesn’t do what you expect, break it up into intermediate variables and print them.”

把复杂表达式拆开,中间变量加上 print,比盯着一行长代码猜管用得多。

与同类书的对比

维度本书 (Learn Python the Right Way)《Python 编程:从入门到实践》《SICP》
起点零编程基础零编程基础有一定编程基础
风格学院派 + 互动练习项目驱动函数式抽象思维
深度覆盖到数据结构(链表/栈/队列/树)覆盖到 OOP + 项目实战递归、高阶函数、解释器
特色turtle 图形 + PyGame 游戏三个完整项目(游戏/Web/数据)计算过程的抽象
适合人群计算机入门课教材自学想快速做出东西想深化编程思想

阅读建议

  • 初学者:按顺序读,每章做完练习。第 3 章(turtle)和第 17 章(PyGame)是”正反馈节点”,务必动手跑代码
  • 有基础者:可以跳过 1-7 章,直接从数据结构部分(25-28 章)或 PyGame 项目开始
  • 教学用:这本书天然适合作为大学 CS1 课程教材,每章结构完整(讲解 + Glossary + Exercises)

关联笔记