值得读几遍的Python入门书
2017-01-14
《Python基础教程》看了三遍了。第一遍看囫囵吞枣,看好了之后尝试写代码;第二
遍重温,同时还看了《Python学习手册》,《Python Cookbook》,看得不够仔细,部分细节(如正则表达式)对照另两本书一起看,部分例子看懂,并敲代码;第三遍重温,从头到尾仔细看了一遍,大概花了一个多月时间,每天晚上看1~2个小时,收获很大。
先说它好的地方。它把基本的东西都讲了一遍,循序渐进。我觉得可以分三部分来看:
第一部分:基本语法---->抽象(函数,类)---->异常--->迭代---->标准库(包括了正则表达式)。这些在《Python学习手册》中讲的非常详细,看起来会很累,而《基础教程》则会轻松一些,掌握基本的东西。
第二部分:讲如何和外界打交道,包括:文件、图形用户界面、数据库支持、网络编程。这些内容的知识点又是和后面的10个例子对应起来。讲好上述基本内容后,又教你如何测试(“如何真正地测试程序----完全、有条理的、着迷一般地测试”)、打包、发布自己的程序。
以上方方面面都说清楚了,看得时候需要思考、查资料,稍微有点累。起到入门作用,每个细的方面,可以用到了再找资料,比如网络编程,它会推荐书。
第三部分:实践。第19章介绍一般性的编程指导。“到目前为止,对于Python的工作方式,读者们应该比开始有了更清晰的概念。打个比方来说就是小跑车现在已经准备上路了-----接下来的10章,会将学到的知识用于实践。每章内都包含一个拥有大量实践空间的DIY项目,同时也会介绍实现解决方案所需要的工作”。
我以为从19章开始是本书的精华。刚开始学Python的时候,找了很多语法的资料、书,看完后总感觉语法掌握的好像差不多了,但是Python可以用来做什么?都说它很强大,强大在哪里?耐心琢磨,读懂后面的10个例子后,对这两个问题有了感觉,就像19章开头所说的,“Python最有意思的地方之一就是它能让你的工作变得富有成效”。这10个例子别涉足了:文本处理、利用图形创建PDF文件、XML生成网站、聊天工具(网络)、CGI技术、基于Web的论坛(CGI、数据库)、XML-RPC、GUI。例子把当下的一些东西都涉及了,虽然不是最新的技术,但告诉了你有这个方向,可再找资料深入挖掘。
每个例子的组织很好,以后遇到问题都可以按这个思路考虑:问题是什么;有用的工具;准备工作;初次实现;再次实现;进一步探索。基本上每次再次实现,都会展示“如何将一个没有任何形式抽象(没有函数、类)的简单原型改进为一个增加了数个重要抽象特征的泛型系统”。学好语法之后,我感觉自己最多能笨拙的、费力的用初次实现的方法、硬编码来解决问题;再次实现的思路、设计很好,光学语法真的没法写出来,虽然有些例子的内容可能有点老,但思路是值得学习的。每个例子都复习了之前学到的语法知识、第二部分的知识。我觉得本书的结构也很好。
第十个例子给我感触很深。光看题目“DIY街机游戏”,就觉得很神奇,怎么开发一个像模像样的游戏?按照它的方法实现了,发现也不是那么难。前面好几个例子都有这种感觉。就像19章说的,“个人认为Python的强大功能之一,就是它让编程变得好玩。”
看第三遍的时候,有些细节也挺有意思。
第1章。一直依葫芦画样在程序的第一行写上:#!/usr/bin/env python。不知所以然。原来它叫“pound bang”或者“shebang”。它的作用是像运行其他程序(比如浏览器、文本编辑器)一样运行Python程序,而不需要显示的使用Python解释器。
第11章讲到的包的概念,“为了将Python将其作为包对待,它必须包含一个命名为__init__.py的文件”。就明白了我在写robotframework库的时候,每个库都包含一个__init__.py文件的原因。大概可以联系起来,细节可以再研究。
又如第18章,怎么用Python编写安装脚本,明白了安装的第三方库是怎么来的,为什么要输入“python setup.py”进行安装。
很奇怪,看第一、第二遍的时候这些都没有注意到。经过实践之后再看到,不禁会心一笑,原来如此。 看书、实践是一个交替的过程吧,刚开始学的时候,是尽快的想用起来,学到基本的知识,用起来之后有了成就感,再看,把原来一知半解的东西弄明白,然后可以慢慢的进步。看到这些细节,也可以明白这本书方方面面都讲到了。
另外,一些箴言的提示也不错。“查看源代码(“使用源代码”,记得吗),可以了解程序的工作机制”(P436);“要记得Python的学习箴言:使用源代码(就是说要阅读能得到的所有代码)”。(P450)----计划开始读工作中用到的第三方库的代码。“如果读者能够掌握本章的某些概念,那么你的Python编程水平就会有很大程度的提高。使用手头上的标准库可以让Python变的无比强大”(P206)----需要好好学习应用《Python标准库》。
它的瑕疵在于有些地方讲的很简单、晦涩,要费力才能理解,有几处费力了还是没有理解。但所幸这样的地方不多。瑕不掩瑜。
八皇后问题真的很难理解,第三遍基本能够明白了,第一次时真是云里雾里。
正则表达式的sub函数,也是对照了其他资料才明白的。P326“re.sub函数可以将一个函数作为第二个参数(替换式)。函数会被匹配的对象调用,并且它的返回值会被插入到文本中”。看了好久,我认为“函数会被匹配的对象调用”应该是“函数会接受被匹配的对象作为参数”,这样才对。
其他大概还有3、4个看不懂的小点。
说到它的翻译,我觉得挺好的,很流畅,反正要我来翻译,肯定是语法不通、晦涩难懂。看英文原版太累、太慢了。
Ps.开始在工作中应用python,尝试到了它的好处。