CPython内部:Python3解释器指南(书)

2020-06-03 00:43:23

解锁Python语言内部工作原理,从源码编译Python解释器,参与CPython开发:

比如,为什么字典比遍历列表查找条目…要快得多。

生成器如何在每次产生值时记住变量的状态-为什么您不必像在其他语言中那样分配内存?

CPython解释器抽象了底层C平台和操作系统的复杂性。

简而言之,CPython为您提供了一个平台,可以使用Python…舒适而强大的语法编写可伸缩且高性能的应用程序。

这就是为什么在您成为Python开发人员的某个阶段,了解CPython的内部工作方式会让您受益匪浅。

通过“窥探Python运行时的幕后”,您将加深自己的技能,并成为真正的Pythonista…。

您将离真正掌握Python更近一步,使您能够编写漂亮的习惯用法代码,而且速度快、效率高。

一旦您看到Python在解释器级别的工作方式,您就可以优化您的应用程序并充分利用Python的强大功能。

很少有开发人员会花时间如此深入地理解他们的工具--这是给同事和面试官留下深刻印象的必经之路。

本书以平易近人和亲身实践的方式解释了CPython的概念、想法和技术细节:

阅读并浏览CPython3.9解释器源代码。您将深入理解和欣赏列表、字典和生成器等概念的内部工作原理。

更改Python语法并从头编译您自己的CPython版本。您将使用新功能定制Python核心数据类型,并运行CPython的自动化测试套件。

掌握CPython的内存管理功能,并使用并行性和并发性扩展Python代码。

像真正的专业人士一样调试C和Python代码。对Python代码和运行时的性能进行评测和基准测试。

参与CPython的开发,并知道如何为Python解释器和标准库的未来版本做出贡献。作为“Python核心开发人员”回馈社区的感觉会有多棒?

在这本书中,您将介绍CPython内部背后的关键概念,以及它们是如何在您进行的过程中与可视化解释一起工作的。

书中的每一页都经过了精美的排版、代码示例的语法突出显示和说明性插图,以便您可以有效地处理和记忆信息:

从容不迫地学习每一章,并确保您尝试了示例和动手的“代码编写”部分。一旦你读完了这本书,你将能够运用你新学到的知识来:

编写用C编程语言编写的Python自定义扩展(本书包括“Pythonistas的C入门”一章)。

为CPython项目做出贡献,开始您成为Python核心开发人员的旅程。

此外,您会有一种成就感,因为您完全掌握了Python的核心概念,这些概念使您成为一名更好、更有效的Python程序员。

提前访问折扣:我们目前正在为图书提供限时的“提前访问”折扣,同时我们正在做最后的润色。

您将收到该书的当前版本(已完成95%)和所有未来更新,包括将于2020年发布的最终版本。

Anthony Shaw是CPython贡献者和PyCon演讲者。他有理科学士学位。计算机科学专业,有超过8年的Python使用经验。Anthony也是Python软件基金会的会员和开源Apache基金会的成员。

这本书目前有389页长。Python3.9(即将推出的Python编程语言版本)的所有材料都是完全最新的。

简而言之,以下是您将从CPython内部学到的内容:Python解释器指南:

第1章:简介如何充分利用这本书,以便您能够有效、快速地了解CPython开发的最新情况。

第2章:获取CPython源代码CPython源代码发行版附带了一系列工具、库和组件。您将在本章中开始探索它们。

第3章:设置您的开发环境在本书中,您将使用C和Python代码。在本章中,您将了解如何配置开发环境以支持这两种语言。

第4章:编译CPython现在您已经下载了CPython,设置了开发环境并对其进行了配置,您可以将CPython源代码编译成可执行的解释器。

第5章:Python语言和语法理解为什么CPython是用C编写的,而不是Python,然后深入研究Python语言规范及其解析器生成器设置。

第6章:配置和输入现在您已经了解了Python语法,接下来是探索如何将代码输入到可以执行的状态的时候了。

第7章:使用语法树进行词法分析和解析在上一章中,您探索了如何从各种来源读取Python文本。需要将其转换为编译器可以使用的结构。这个阶段是“解析”。在本章中,您将探索如何将文本解析为可编译的逻辑结构。

第8章:Python编译器在本章中,您将重点介绍如何将AST模块编译成CPython解释器可以执行的代码对象。这些代码对象包含字节码形式的离散操作列表。

第9章:CPython中代码的求值循环执行发生在称为“求值循环”的中心循环中。在本章中,您将熟悉作为CPython“大脑”的计算循环。

第10章:内存管理在本章结束时,您将了解CPython如何在操作系统上分配内存,如何分配和释放对象内存,以及CPython如何管理内存泄漏。

第11章:并行和并发CPython提供了许多并行和并发的方法。你的选择取决于几个因素。随着CPython的发展,模型之间也存在重叠的用例。本书的这一主要章节将使你熟悉相关概念。

第12章:对象和类型了解常见的内置类型(如字符串、列表、元组和字典)是如何在CPython中实现的。在本章中,您还将在Python字符串上实现自定义内置运算符。

第13章:Python标准库CPython标准库中有两种类型的模块:一种是用纯Python编写的提供实用程序的模块,另一种是用C语言编写的带有Python包装器的模块。您将在本章中探索这两种类型。

第14章:CPython测试套件了解如何在Windows、Linux和MacOS上运行CPython涵盖核心解释器、标准库、工具和发行版的广泛测试套件。如果您想参与CPython项目,编写或扩展单元测试是一个很好的起点。

第15章:调试在本章中,您将学习如何将调试器附加到CPython解释器,以及如何使用调试器查看正在运行的CPython进程的内部。

第16章:基准测试、性能分析和跟踪在本章中,您已经使用许多为CPython设计的工具探索了基准测试、性能分析和跟踪。使用正确的工具,您可以找到瓶颈、比较多个构建的性能并确定改进。

第17章:结论&进一步阅读如何使用新学到的知识来扩展Python的功能并为CPython项目做出贡献。

附录:面向Python程序员的C简介本简介旨在让有经验的Python程序员快速了解C语言的基础知识以及如何在CPython源代码中使用它。

综上所述,让我们再来看看这份工作会给你带来什么:

“为什么我要与您分享Anthony的CPython内部结构?这是我多年前开始Python之旅时希望存在的那本书。

更重要的是,我相信,作为Python社区的成员,我们有一个独特的机会-将我们的专业知识投入工作,帮助解决我们面临的复杂的现实世界问题。

Anthony在解释CPython、鼓励您阅读源代码以及与您分享该语言的构建块时采用了这些优势。

我相信在读完这本书后,你的技能将会增长,你将能够解决更复杂的问题,从而改善我们的世界。“。

以一种无论是初学者还是高级Python用户都易于理解的方式,对Python内部知识进行全面的演练,这个主题几乎没有好的资源,这一点令人惊讶。

“Anthony的书给我留下最深刻印象的是,它如何将更改CPython代码库的所有步骤按照易于遵循的顺序排列。它真的感觉像是某种“丢失的手册”。

深入了解Python的C基础是非常有趣的,它为我解决了一些长期存在的问题。我发现关于CPython内存分配器的章节特别有启发性。

CPython内部结构对于任何希望将他们的Python知识带到更深层次的人来说都是一个很好的(也是独特的)资源。“。

“‘并行和并发’这一章是我最喜欢的章节之一。我一直在寻求对这个主题的深入了解,我发现你的书非常有帮助。

当然,读完那一章后,我无法抗拒其余的内容。我急切地盼望着一旦出版我自己的印刷本!。

我之前已经阅读过您的“CPython源代码指南”的文章,这篇文章让我有兴趣了解更多关于内部结构的信息。

有大量关于Python的书籍教授这门语言,但我还没有真正看到任何关于如何向那些好奇的人解释内部结构的书。

虽然我目前在教我女儿Python,但我把这本书加到了她的必读书单上。她目前在佐治亚州立大学学习信息系统。“。

我们最不希望你把这本书传下去,因为你不确定这本书对你是否管用。我们知道它会的,所以这是我们给你的提议:

让我们接受考验。今天以“CPython内部:Python3解释器指南”为例。

如果出于某种原因,您不同意我们为您提供了一种更快、更容易的方式来吸收您所需的知识,使您在与其他开发人员的竞争中脱颖而出,我们将在明年的任何时候很乐意退还您的钱,不会有任何问题,也不会有任何麻烦。

如果我不喜欢这本书怎么办?我们只想要快乐的顾客。如果你对电子版的书不满意,给我们发一封电子邮件,告诉我们它让你犹豫不决的地方。我们会全额退款-即使12个月后也是如此。

如果我买了预览版,我会收到这本书的最终版本吗?是的,如果您购买Early Access版本(目前已完成95%,见下文),您将收到电子书的最终版本以及任何未来的更新。这个优惠是在2020年发布的最终版本上获得折扣的一个很好的方式。

这本书会有印刷版/平装版吗?我们正在准备一个平装版,一旦电子书完成了早期访问阶段,就可以出版了。当平装版发行时,它将是从亚马逊或你最喜欢的当地书店单独购买的。我们计划在今年晚些时候发行平装本。硬拷贝的定价将取决于我们的印刷成本,我们将努力为获得数字版本的早期访问客户提供某种折扣。所以,敬请关注RP电子邮件时事通讯的进一步公告!

这本书目前处于什么状态?这块料子有多长时间?我们对材料已经“满意”了,并且已经与Real Python教程团队和RP社区的成员一起经历了几个反馈周期。

我们正在运行早期访问阶段,为这本书做最后的润色-比如增加前言,写导言部分,等等。如果我们必须给出一个数字,我们大约已经完成了95%的项目。

这本书基本上已经准备好在黄金时间发行了,但我们的信条是“质量、质量、质量”,所以我们希望确保材料以尽可能好的方式呈现出来。有了Early Access优惠,你可以成为这一努力的一部分,分享你的反馈,并在价格上涨之前获得很好的折扣。

我需要掌握多少Python才能使用这本书?本书面向中高级Python开发人员。我们已经尽了一切努力来分解代码示例,但本书将使用一些中间的Python技术。如果您不确定自己已经准备好了,那么通读本书的各章是挑战自我、识别和修复Python知识中的薄弱环节的好方法。

我需要知道C才能使用这本书吗?你不需要精通C语言就可以使用这本书。如果您是新接触C语言,请查看本书后面的附录1:面向Python程序员的C简介以获得快速介绍。

看完这本书需要多长时间?“我不建议仓促读这本书,试着一次读一章,在每一章之后试一试示例,同时探索代码。一旦你读完这本书,它会成为你及时回来的很好的参考指南。这些章节也相当自成体系,所以你可以跳过,专注于你最感兴趣的章节。“。(安东尼·肖)。

我将要学习的CPython细节不会很快过时吗?“巨蟒已经有20多年的历史了。CPython代码的某些部分自最初编写以来就没有被修改过。这本书中的许多原则在十年或更长的时间里都是一样的。事实上,在写这本书的时候,我发现了许多由Guido van Rossum(Python的作者)编写的代码行,这些代码行从CPython版本1.0开始就没有人碰过。

您将在本书中学习的技能将帮助您阅读和理解CPython的当前和未来版本。变化是持续不断的,你的专业知识可以在此过程中不断发展。这本书中的一些概念是全新的,有些甚至是实验性的。

在写这本书的时候,我遇到了源代码中的问题和CPython中的bug。然后,他们得到修复或改进。这是CPython作为一个蓬勃发展的开源项目所带来的奇迹的一部分。“。(安东尼·肖)。

我将如何接收更新?当更新出来时,我们会通过电子邮件宣布。此外,您还可以在realpython.com帐户中找到该书的最新版本以供下载。

我还有一个问题!请发电子邮件给我们:[email protected],我们会尽快回复您。