乐趣区

关于python:如果只推荐一本-Python-书我要-Pick-它

往年二月初,我偶尔看到了一条推特:

《晦涩的 Python》一书的作者公布了一条激动人心的音讯:他正在写作第二版!

如果要票选最佳的 Python 进阶类书目,这本书必定会是得票率最高的书籍之一。我在最早写“Python 猫荐书系列”时,就想举荐它,但又感觉好货色应该留到最初,所以始终拖到了当初……

如果你读过它,必定也会认为它值得举荐;如果你没有,那请往下浏览,看我的介绍是否感动你把它列为必读书目吧~

这本书的英文名是《Fluent Python》,在 2015 年 8 月出版。两年后,国内的图灵教育出品了译本,出版工夫是 2017 年 5 月,取得豆瓣 9.4 高分。(图书翻译 / 出版真是个漫长的过程啊)

作者 Luciano Ramalho 是个巴西人、资深的 Python 程序员 / 演讲者、PSF(Python 软件基金会)成员。书籍的技术审校与推荐人囊括了圈内的一众大咖。

此书一出,大受圈内好评,各国出版社纷纷引进版权,目前至多已有 9 种语言版本(来数数你意识几种?):

PS:图片出自 @fluentpython 官推,简体中文版最薄,偶合占据 C 位。依据图灵教育统计,简体中文版销量超过 4 万册,预计在 2020 年能超过英文版的销量。

那么,这本书到底写了些什么呢?又有哪些特别之处呢?

全书内容空虚,除去前言、附录和术语表这些内容,共分为六个局部 21 章节。我将外围章节内容制作了一份思维导图:

(在 Python 猫 公众号回复『晦涩』,有残缺的高清原图)

以上是次要章节的思维导图,图中的数字是折叠起来的分支数。

上面给大家看看局部的细节图:

原图太大,展现不下。在 Python 猫 公众号内回复『晦涩』,有残缺的高清原图、PDF 版本和 MarkDown 版本

从章节上能够看出,这本书次要面向中高级的开发者。它根本不波及入门级内容,反而聚焦在数据模型、数据结构、函数对象、面向对象、管制流程与元编程等话题上。

关上书本第一章,作者用寥寥十几行 Python 代码,就徒手实现了一副扑克牌:

import collections

Card = collections.namedtuple('Card', ['rank', 'suit'])


class FrenchDeck:
    ranks = [str(n) for n in range(2, 11)] + list('JQKA')
    suits = 'spades diamonds clubs hearts'.split()

    def __init__(self):
        self._cards = [Card(rank, suit) for suit in self.suits for rank in self.ranks]

    def __len__(self):
        return len(self._cards)

    def __getitem__(self, position):
        return self._cards[position]

而后,间接就点出了全书最关注的外围话题:由各种非凡办法形成的数据模型。

非凡办法(special method)是__xxx__() 这种以前后双下划线命名的货色,通常又被称为魔术办法(magic method)和双下办法(dunder method),是 Python 独有的设计。

数据模型(data model)无疑是 Python 语言的要害外围,是得以造成所谓 Python 格调(pythonic)的基石。Python 中所有皆对象,而数据模型则是这些对象的接口标准,正是因为它,Python 得以取得极强的行为一致性。

《晦涩的 Python》以数据模型为始,定下了全文的格调基调,即关注 Python 对象的结构以及语言外部的个性细节,目标是让读者写出更纯粹、简洁高效、可读易用的代码。

《晦涩的 Python》作者与中文版合影

接着,它介绍了 Python 中一些内置类型的个性(序列类型、映射类型、文本和字节类型),介绍作为非凡对象的函数以及一般性对象的用法,介绍管制流程(迭代器、生成器、上下文管理器、协程和并发编程),最初深刻到素有黑魔法之称的元编程(描述符和元类)。

全书 600 多页,洋洋洒洒,旁征博引,内容空虚到让人应接不暇,让人时不时就产生一种“又学到了新常识”的感觉,以及一种“哦我想进一步学习 xxx”的求知欲望。

很多读过书的同学会有一个同感:它的“延长浏览 / 杂谈”并不是闲笔,反而有些内容比注释更精彩,作者在此展现了他丰盛的知识面(官网文档、社区典故、语法演进、文章视频、开源我的项目、语言差别等等),每一章都值得开掘浏览。目前没有任何一本 Python 书籍能在这方面与它匹敌。

我举荐大家找到本人感兴趣的章节进行浏览,另外,有人做了十分不错的读书笔记(都挺长的),我放在这里:

http://www.hongweipeng.com/index.php/archives/1345(by hongweipeng)

http://frankorz.com/2017/07/01/fluent-python-note(by 猫冬)

《晦涩的 Python》第一版基于过后最新的 Python 3.4。这些年来,Python 不断丰富本人,既正式宣告了 Python 2 版本的终结,又疾速地演进到了最新的 3.9 版本。

然而,因为作者关注的是 Python 的外围概念,探讨的是根本不会变动的个性,因而倒不用太担心内容过期,它仍是一本十分举荐购买和浏览参考的书籍。

我十分关怀它的第二版,然而也晓得,写作须要工夫,英文出版、中文翻译和中文出版也都须要工夫,所以咱们就一起静候佳音吧。

退出移动版