且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《像计算机科学家一样思考Python》——导读

更新时间:2021-07-31 00:12:23


《像计算机科学家一样思考Python》——导读

前 言

本书的奇特历史

1999年,我正在为一门Java的编程入门课程备课。这门课我已经教过3个学期,感到有些灰心。课程的不及格率太高,即使是那些及格的学生,也只获得了很低的成就。

我发现问题之一是教材。它们太厚,有太多冗余的细节,而针对编程技巧的高阶的指导却很不足。并且学生们都受着“陷阱效应”的苦恼:开头时很容易,也能循序渐进,但接着在第5章左右,整个地板就突然陷落了。新资讯来得太多、来得太快,以至于我必须花费一学期剩下的全部时间来帮助他们拾回丢失的片段。

开课前两周,我决定自己来编写教材。我的目标有以下几个。

  • 尽量简短。学生读10页书,比不读50页书要好。
  • 注意词汇。我尝试尽量少用术语,并在第一次使用它们时做好定义。
  • 循序渐进。为了避免陷阱效应,我抽出了最困难的课题,并把它们划分成更细的学习步骤。
  • 专注于编程,而不是编程语言。我只注意包涵了Java的最小的可用子集,而忽略掉其他。

我需要一个标题,所以心血来潮选择了How to Think Like a Computer Scientist。

第一版教材很粗糙,但确实有效。学生们读完课本,懂得了足够的基础知识,以至我甚至可以利用课堂时间和他们一起讨论更难、更有趣的话题,并且(最重要的是)可以让学生们有足够的时间在课堂上做练习。

我将这本书按照GNU***文档许可协议(GNU Free Documentation License)发布,让用户可以复制、修改和分发本书。

接下来发生了最酷的事情。Jeff Elkner,弗吉尼亚州的一位高中老师,使用了我的书,并且将其翻译成Python语言的版本。他寄给我他的翻译副本,于是我有了一次很奇特的经历——通过读我自己的书来学习Python。通过绿茶出版社(Green Tea Press),在2001年我出版了第一个Python版本。

2003年,我开始在欧林学院(Olin College)教学,并第一次需要教授Python语言。和Java的对比非常惊人。学生们困扰更少,学会得更多,从事更有意思的项目,总的来说得到了更多的乐趣。

结果就产生了本书,并使用了不那么宏伟堂皇的书名:Think Python。部分改动如下所述。

  • 我在每章的结尾添加了一节关于调试的说明。这些章节描述寻找和避免bug的通用技巧,并警示Python中容易出错的误区。
  • 我增加了更多的练习,小到简短的理解性测试,大到几个实际工程。并且编写了大部分练习的解答。
  • 我添加了一系列案例研究——较长的示例,包括练习、解答以及讨论。其中有些是基于Swampy——我为Python课程所写的一套代码。Swampy、代码示例以及它们的解答,可以在http://thinkpython.com上找到。
  • 我扩展了关于程序开发计划和基础设计模式的讨论。
  • 我增加了关于调试、算法分析和使用Lumpy画UML图的附录。

我希望你喜欢这本书,并希望它至少能提供一点帮助,助你学会像计算机科学家那样编程和思考。

—— Allen B. Downey

Needham,MA

目 录

第1章 程序之道
第2章 变量、表达式和语句
[第3章 函数
3.1 函数调用](https://yq.aliyun.com/articles/96133/)
3.2 类型转换函数
3.3 数学函数
3.4 组合
3.5 添加新函数
3.6 定义和使用
3.7 执行流程
3.8 形参和实参
3.9 变量和形参是局部的
3.10 栈图
3.11 有返回值函数和无返回值函数
3.12 为什么要有函数
3.13 使用from导入模块
3.14 调试
3.15 术语表
3.16 练习
[第4章 案例研究:接口设计
4.1 乌龟世界](https://yq.aliyun.com/articles/96213/)
4.2 简单重复
4.3 练习
4.4 封装
4.5 泛化
4.6 接口设计
4.7 重构
4.8 一个开发计划
4.9 文档字符串
4.10 调试
4.11 术语表
4.12 练习
第5章 条件和递归
第6章 有返回函数
第7章 迭代
第8章 字符串
第9章 案例分析:文字游戏
第10章 列表
第11章 字典
第12章 元组
第13章 案例研究:选择数据结构
第14章 文件
第15章 类和对象
第16章 类和函数
第17章 类和方法
第18章 继承
第19章 案例研究:Tkinter
附录A 调试
附录B 算法分析
附录C Lumpy
译后记