今年二月初,我偶然看到了一条推特:

《流畅的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 的核心概念,探讨的是基本不会变化的特性,因此倒不必太担忧内容过时,它仍是一本非常推荐购买和阅读参考的书籍。

我非常关心它的第二版,但是也知道,写作需要时间,英文出版、中文翻译和中文出版也都需要时间,所以我们就一起静候佳音吧。

如果只推荐一本 Python 书,我要 Pick 它!的更多相关文章

  1. 只推荐一本 JavaScript 书,你推荐哪本?

    嗨,我是 Martin.最近为了统一社区称谓,都换成 Martin Ager Adams. 前言 前端世界,技术层数不穷.尽管更新速度已经放缓,刚入门的票友总还是鸭梨山大. 前端三剑客 -- HTML ...

  2. 我的Python书被台湾的出版社引进版权了,书的名字也更吸引人了

    我去年出了一本Python书,基于股票大数据分析的Python入门实战,在这本书里,我是用股票范例讲述Pythorn的爬虫,数据分析和机器学习知识点,如下是京东的连接. https://item.jd ...

  3. 推荐几本Python书

    Python的书很多,由于python本身应用的领域太多,涉及方方面面的,因此书籍的种类也很多,下面是我推荐一些比较好的python书给大家,大家可以找一两本修炼,定能让你的功力大增. 1.A byt ...

  4. python经典书籍推荐:Python核心编程

    作者:熊猫烧香 链接:www.pythonheidong.com/blog/article/27/ 来源:python黑洞网 对<Python核心编程>的褒奖 “ The long-awa ...

  5. 写了两年的一本.NET书现在终于在北京最大的新华书店上架了,然而我却很难找到工作了。

    两年前,有几个出版社的编辑在QQ上跟我联系写书的事情,好奇为什么出版社会找到我这样一个很普通的.NET技术人员,其中一个编辑说他们分析了很多博客园博主的文章阅读量和写作质量,觉得我的博客还是不错的.尽 ...

  6. 推荐一本写给IT项目经理的好书

    原文地址:http://www.cnblogs.com/cbook/archive/2011/01/19/1939060.html (防止原文作者删除.只能拷贝一份了) 推荐一本写给IT项目经理的好书 ...

  7. 《C语言入门1.2.3—一个老鸟的C语言学习心得》—清华大学出版社炮制的又一本劣书及伪书

    <C语言入门1.2.3—一个老鸟的C语言学习心得>—清华大学出版社炮制的又一本劣书及伪书 [薛非评] 区区15页,有80多个错误. 最严重的有: 通篇完全是C++代码,根本不是C语言代码. ...

  8. 推荐一本好书:编写可维护的JavaScript(可下载)

    目录 推荐一本好书:编写可维护的JavaScript(可下载) 书摘: 下载: 有些建议: 推荐一本好书:编写可维护的JavaScript(可下载) 书摘: 很多设计模式就是为了解决紧耦合的问题.如果 ...

  9. 推荐一些python Beautiful Soup学习网址

    前言:这几天忙着写分析报告,实在没精力去研究django,虽然抽时间去看了几遍中文文档,还是等实际实践后写几篇操作文章吧! 正文:以下是本人前段时间学习bs4库找的一些网址,在学习的可以参考下,有点多 ...

随机推荐

  1. Kafka实战宝典:Kafka的控制器controller详解

    一.控制器简介 控制器组件(Controller),是 Apache Kafka 的核心组件.它的主要作用是在 Apache ZooKeeper 的帮助下管理和协调整个 Kafka 集群.集群中任意一 ...

  2. python-逻辑结构操作

    0x01 大纲 逻辑结构 list dict 判断if else elif break continue while 0x02 添加 list = [i for i in range(0,10)] p ...

  3. linux学习(三)Linux 系统目录结构

    一.查看目录 登录系统后,在当前命令窗口下输入命令: ls / 树状目录结构: 二.目录解析 /bin: 存放二进制可执行文件(ls,cat,mkdir等). /boot: 存放启动Linux时使用的 ...

  4. Servlet中关于中文乱码

    一.客户端请求服务器的数据有乱码 1.get方式请求 ①修改tomcat/conf/server.xml,在<Connector> 标签中添加属性useBodyEncodingForURI ...

  5. Asp.Net Core Log4Net 配置分多个文件记录日志(不同日志级别)

    本文所有配置都是在core3.1环境下. 首先看看最终的效果. 请求监控:对每次请求的相关信息做一个记录. 全局异常:我不想我的错误信息,跟其他的信息混合在一起,查看的时候不大方便. 应用日志:这个主 ...

  6. 刷题[GXYCTF2019]禁止套娃

    梳理思路 打开网站,发现很简单,只有flag在哪里的字样. 查看源码,常用后台目录,robots.txt,都未发现有任何东西. 扫描 直接拉进扫描器一扫,发现 思考可能是git源码泄露,可能可以恢复源 ...

  7. zabbix安装要求

    zabbix server 和 zabbix Agent都在一个压缩包中,可以从官网上下载源码包,www.zabbix.com/download.php zabbix是C语言编写,压缩包的文件夹介绍: ...

  8. SpringBoot-04-自动配置原理再理解

    4. 自动配置原理再理解 ​ 配置文件到底能写什么?怎么写?SpringBoot官方文档有大量的配置,但是难以全部记住. 分析自动配置原理 ​ 官方文档 ​ 我们以HttpEncodingAutoCo ...

  9. vue3.0版本安装

    如果安装过其他版本的vue的话先卸载 npm uninstall -g vue-cli //卸载指令 卸载不会影响以前项目的启动 然后安装 NPM安装: npm install -g @vue/cli ...

  10. Docker笔记1:Docker 的介绍

    目  录 1.Docker 简介 2.Docker 特性 3.Docker 应用场景 4.Docker 优点 1.Docker 简介     Docker 提供了一个可以运行你的应用程序的封套(env ...