共计 3575 个字符,预计需要花费 9 分钟才能阅读完成。
《Fluent Python》第一版在 2015 年出版,简体中文版《晦涩的 Python》在 2017 年出版。从那时起,它就成为了所有 Python 程序员的必读之书。如果一份面向中高级 Python 开发者的书单里不蕴含这本书,那这份书单必定不合格!
《Fluent Python》第二版在 2022 年出版,最近,简体中文版《晦涩的 Python》也隆重上市了!
在收到出版社的赠书后,我发了一条朋友圈,收到了很多点赞,以及征询最多的两个问题:新书相比于旧版,有什么区别?我是老手,这本书适宜我么?
本文将给大家解答这两个问题,另外在文末有赠书福利(送 10 本书),请不要错过哦~
这本书适宜哪些读者?
如果你是零根底的 Python 老手,那么这本书不适宜你,因为这本书“深刻分析 Python 语言外围个性及底层逻辑”,你可能会感觉它深奥超纲。
如果你是零根底的初学者,那么我举荐你浏览《Python 编程:从入门到实际》、《看漫画学 Python》这样的入门书籍。然而,在划走之前,请你肯定要珍藏本文,因为 Python 入门简略,置信你很快就会须要一本领导进阶的书籍了。
除了以上的读者群体外,《晦涩的 Python》适宜于所有 Python 开发者 / 爱好者,特地地,如果你怀有以下的想法,那么这本书相对是不二之选:
- 想要更加熟练地把握 Python
- 想要理解实用的编程技巧
- 想写出纯粹、优雅、高效的 Python 代码
- 想要把握 Python 最新的语言个性
我在两年前写过一篇《如果只举荐一本 Python 书,我要 Pick 它!》,强烈推荐了第一版书籍,你能够从该文看到第一版次要内容的思维导图,以及我的举荐介绍。
如果你没听说过《晦涩的 Python》,或者没读过第一版的书,我倡议你先读一下那篇文章。
在本文中,我次要面向曾经理解过这本书的读者,答复大家最为关切的两个疑难:曾经读过第一版了,是否还有必要读第二版呢?曾经领有了第一版书籍(不论实体书还是电子书),是否值得再买入第二版呢?
这本书新增了什么内容?
《晦涩的 Python》作者 Luciano Ramalho 是 Python 软件基金会成员,他深度参加了各类社区活动,熟知大量语言个性的设计过程和差别,他的书具备 内容全面而新潮 的特点。在第一版写作实现时,Python 3.5 版本还没公布,然而书中已蕴含了大量 3.5 版本的内容。
第一版英文书籍公布于 2015 年,那时社区中仍有较多 Python 2 用户旧调重弹,因而作者的附加用意之一就是展示 Python 3 的魅力,疏导老用户们进行迁徙。
在随后 7、8 年工夫里,Python 社区中产生了很多重大事件:
- 2015 年,PEP-484 被引入到 Python 3.5 版本,类型提醒开始迅猛发展
- 2015 年以来,asyncio 引入了很多新个性,异步编程越来越好用
- 2015 年 TensorFlow 公布,2016 年 PyTorch 公布,2017 年 AlphaGo 击败人类世界围棋冠军。2022 年 ChatGPT 公布,各种 AI 模型和利用变得不可胜数
- 2018 年,Python 之父 Guido van Rossum 卸任“独裁者”,社区开始“领导委员会”治理模式
- 2020 年,Python 2 彻底进行保护
- 2023 年,PEP-684 被驳回,PEP-703 也有心愿被驳回,GIL 将迎来重大改革……
第二版书籍从 2020 年初开始写作,他这次已不必特意思考 Python 2 用户了,重点是让读者相熟 Python 新的性能个性。
英文第二版的上市工夫比 Python 3.10.0 的公布工夫早了好几个月,然而,书中的示例已基于 3.10 测试过,不仅有大量 3.10 版本的内容,还波及一些 3.11 版本的变动。
为了凸显出两个版本的差别,这本书每一章的第一节都会介绍“本章新增内容”。得益于作者梳理出的线索,我整顿出了一份新增个性的清单(仅为简化版,具体内容请以书本为准):
- 3.5 版本:原生协程、矩阵乘法运算
- 3.6 版本:f-string 语法、collections.abc.Collection 形象基类、异步生成器
- 3.7 版本:dict 插入有序、@dataclass 装璜器、contextlib 模块新增的几个函数、http.server 的多线程服务器
- 3.8 版本:仅限地位参数、异步的 REPL、@functools.cached_property、海象运算符(:=)
- 3.9 版本:
|
和|=
运算符、缓存装璜器 functools.cache、泛化类型提醒 - 3.10 版本:模式匹配语法(match-case)、zip() 函数的新性能、带括号的上下文管理器
以上列举的内容都是各个版本的新个性,表明了这本书紧跟着语言的发展趋势。
除此之外,书中还减少了大量的内容或批改,比方:新增了很多图表、阐明框、示例代码和延长浏览资料;介绍 dict 与 OrderDict 之间的差别、介绍字典的视图对象、super() 函数是如何反对合作多重继承的、如何防止应用继承、应用 HTTPX 库、新增 FastAPI Web 服务示例、应用元类时的注意事项……
以上提到的新内容和批改点,次要都扩散在第一版原有的内容里。另外,对于一些重点话题,作者在第二版里减少了大量的篇幅,比方新增两章内容重点介绍类型提醒(《第 8 章 函数中的类型提醒》、《第 15 章 类型提醒进阶》)、减少大量并发编程内容(新增一章《第 19 章 Python 并发模型》、新增 asyncio 异步编程内容)……
在翻阅新书的时候,我还留神到了几个值得一提的章节(都是第一版没有的内容):
- 第 13 章对四种类型的划分探讨(鸭子类型、大鹅类型、动态鸭子类型、动态类型),不再是惯例的类型分类角度(即动静类型、动态类型、强类型、弱类型),而是将类型提醒以及形象基类整合进来,作者画的图例让我感觉耳目一新
- 第 2.6 节不仅介绍了最新的模式匹配(match-case)语法,还用它重构了一个解释器 lis.py 代码。而后到了第 18.3 节,作者又进一步剖析 lis.py 的整体机制,试图让咱们感触到“纯粹的 Python 代码体现的编程美感”,通过介绍 Scheme 句法,让 Python 开发者感触“简略的语言设计哲学如何让 Scheme 成为大师级作品”
- 第 21.9.1 节应用 FastAPI 框架实现 Web 服务,舍弃了第一版中用到的 aiohttp,这为近几年已非常风行的 FastAPI 又助力推了一把
《晦涩的 Python》的内容非常庞博,信息密度极高,作者是个 相对的细节控和整顿巨匠。在主体的文本外,那些密集的提示框、正文、延长浏览和杂谈,在常识广度和深度上让人叹为观止。
第二版除了新增大量内容外,还调整了很多原有章节的秩序,图灵教育整顿了全书的思维导图如下:
总体而言,第二版的变动之大超出了我的预期,值得咱们临时遗记第一版,而后把它当做一本全新的书认真研读。购入实体书也很有必要,因为很多章节彼此关联,实体书比拟便于查找指标章节,也便于浏览残缺的上下文信息。
其它的变动
在解答完大家最为关切的问题后,我还想补充几点。
首先是对于印刷,第二版分成了高低两册,用纸也更为考究,比第一版轻薄许多,比照沉甸甸的第一版,我个人感觉新版的浏览体验晋升了不少。
其次是对于翻译,第二版批改了旧版翻译不到位或不精确的很多内容。比方,第一版将“Goose typing”翻译成“白鹅类型”,第二版批改成了“大鹅类型”;第一版将“Boolean Value of a Custom Type”谬误译成了“自定义的布尔值”,第二版修改为“自定义类型的布尔值”;第一版将“When a List Is Not the Answer”译成“当列表不是首选时”,第二版批改成“当列表不实用时”……
“goose”是“鹅”,为了跟“鸭子类型”对照,最好翻译成两个字,但鹅不肯定是红色,却广泛体型大于鸭子,因而我感觉改成“大鹅类型”是贴切的。另外两个例子出自前两章的小标题,比拟显眼易见,书中还有不少翻译调整之处,就不一一列举了。
最初很值得关注的是,作者在创作第二版时,为新书搭建了一个网站,外面已收录了多篇没有写到书中的文章,能够作为辅助材料。
网站文章目前包含:经典的协程(高能预警:这篇特地长,是对书中第 17.13 章的强力补充)、应用 bisect
解决有序序列、汇合与字典的外部实现、对象的弱援用,等等。
福利环节
本次赠书共 10 本,有效期至 5 月 2 日 12 点。
抽奖送书(5 本):给公众号【Python 猫】发送数字“0428”,获取抽奖二维码后参加。
评论送书(5 本):有两种评论形式,任选其一即可。形式 1,从公众号里加猫哥为好友后,在朋友圈评论“你想取得赠书的理由”;形式 2,将本文转发到你的社交圈之一(朋友圈或技术群或头条号或微博或其它交流平台),写上你对本书的评论 / 举荐语,而后发截图给我。
抽奖送书,各凭运气;评论送书,我会择优录用,奖品不叠加。若有弃奖,则奖品在微信读者群内抽奖送出。最初,感激图灵出版社对本次流动的资助。