Pro Python读后感

2010-11-19 19:18

书籍元信息

书名: Pro Python

豆瓣链接: http://book.douban.com/subject/4249385/

官方网站: http://propython.com/

作者: Marty Alchin

依惯例, 更多的元信息自己去查吧.

随感

在比较正式地介绍这本书之前, 先随便堆几句随感吧. 首先, 我拿到电子版后, 还没怎么具体地读目录, 就决定要把这本书打印出来了, 因为我是这个作者Marty Alchin的粉丝. 这个作者之前写过另一本书, Pro Django, 而Pro Django这本书的第二章写得相当华丽. 这一点在Pro Python的官方网站上可以看到很多人的评论, 而且很负责任地说, 这些称赞都毫不过分.

Python这门编程语言上手很快, 但是要让代码真正地变得pythonic, 并不是一件简单的事情. python面子上的语法很简单, 通俗易懂, 但是如果要是简单地把python当bash用, 会丧失很多乐趣. 这就像修房子, 如果你只是执着于将房子建起来, 能遮风挡雨, 那么你永远也不能成为鸟巢或小蛮腰的设计师. 对于每个有这样追求的人而言, Python标准库说明和源码就是你的建筑材料的参数手册, 而Pro Python这样的书就是土木工程学科的高级教材. 如果你想要写出华美地代码, 学习这本书里的技巧是必不可少的.

或者从另一个角度来说, 英文中有个说法叫the dark side of the moon, 形容这样一种天文现象, 即由于潮汐力的作用, 月球永远是拿它的某一面面对地球, 而另一面却总是隐藏在黑暗中的. 拿这个来比喻这本书中所讲述的技巧是比较合适的. 例如如果你是一个易满足的Django开放者, 你永远不会知道在Django的ORM中用了多少诸如元类编程的技巧. 当然, 也许你会说你从来没用过这些技巧, 但是也活得好好的. 但是, 这些技巧大都是让你有缺憾的代码变得更pythonic的不二法门. 如果你只是拿python当一个普通的脚本语言, 对于明天没有要求, 那么这些技巧你还是敬而远之为好; 但如果你和我一样, 相信import this里面的箴言能够让你活得更好, 这本书也不妨读一读.

把这本书和其它我个人用得比较多的python书籍比较下: python标准库是用来查阅函数名和参数的官方文档, python核心编程翻过一次, 可以拿来找例程, 而以后知道这段代码可以如何变得更pythonic时, 就可以找来Pro Python查阅了.

章节推荐

下面的推荐都是按照个人品味来说的了, 约摸只供各位看官一笑.

第一章讲哲学, 不过我个人不太喜欢, 什么东西脱离实际上升到方法论的高度就没意思了.

第二章标题是Advanced Basics, 这一章除了流程控制这一节比较不讨我喜欢外, 都是比较好玩的东西. Iteration里面很详细地讲了列表解析, 是我看过的把这个题目讲得最详细的了. 不仅如此, 这部分还给出了集合解析和字典解析这些东西. 接下来的一节是Collections, 其中有名元组, 有序字典这两个东西很好玩. 再往后是讲各种import, 这一部分只能留作参考了, 目前还没遇到过特别纠结的import需求. 总体来说, 这一章讲的都是比较细节的东西, 掌握不掌握这些东西, 关系不算太大, 一般来说, 知道有这些就够了.

第三章是讲函数, 每一个小节都很重要. 诚然, 这本书对位置参数和关键字参数的讨论可能比较无趣, 但是对于partial函数的使用和函数参数相关的自省却是比较引人入胜的. partial函数能够在很多时候解偶你的程序结构. 到了装饰器的部分, 这儿优点是讲得很清楚, 而且给出了各种纠结情况下的例程, 改改就能用. 后面的Annotation在python 2.x里面还没有, 不过基本了解下也是有益处的, 而生成元和匿名函数这些函数式编程的东西也是开卷有益的.

第四章讲类. 老实说有关MRO那段我没特别仔细看, 除非是写mixin, 否则一般不需要了解这样的东西, 而且话说回来, mixin对MRO的理解要求似乎也不是那么高. 后面专门的一节讲原类编程自然是要看的了. 后面的类属性相对比较平淡, 类方法总结得比较详细, 可以当资料查. 而魔术方法这部分又一般般了.

我个人觉得常用协议这一章讲得还不如Pro Django那本第二章的那个部分精彩. 如果在这个部分没领略到妙处的同学可以去围观Pro Django这一部分的叙述.

对象管理这部分可以随便看看, 有需要的时候再来参考. Borg Pattern, GC, 深浅拷贝这些主题虽然不是那么让我高兴, 但毕竟也是有用的. 例如深浅拷贝的区别也算是Python常见的陷阱之一.

后面的部分没仔细看了, 看这本书的初衷是看看python语法中还有哪些隐藏的不为我所知的内容, 后面这些内容和这个初衷无关. 至于那个CSV框架, 还是等某个长假在家无所事事的时候再去研究吧.