56

我已经使用 Python 编程半年多了,我对 Python 内部结构更感兴趣,而不是使用 Python 来开发应用程序。目前我正在将一些库从 Python2 移植到 Python3。但是,我对如何将 Python2 移植到 Python3 有一个相当抽象的观点,因为大多数更改都涉及 Python2.x 中的设计问题

我想了解更多关于 Python 内部的信息;我应该采用自上而下还是自下而上的方法?有什么可以推荐的参考吗?

4

6 回答 6

41

听起来您想更多地了解语言设计背后的基本原理,而不是内部原理。“内部”对我来说意味着诸如对象如何在内存中布局、引用计数如何工作等等。

如果您想更深入地了解设计决策,请尝试阅读PEP:它们是更改语言的建议,并且通常包括对更改原因、被拒绝的替代方案等的详细讨论。即使是被拒绝的 PEP 也很有用,因为它们展示了塑造语言的思想。

例如:

等等..

如果您真的想了解 Python 内部结构,请先阅读 Python C API,它用于构建 Python 本身:我的演讲A Whirlwind Excursion through Python C Extensions是一个起点。然后,您可以深入研究 Python 源代码本身,了解您需要了解的任何内容。

于 2010-07-21T11:33:57.943 回答
15

对于从相关链接或搜索中偶然发现这个问题的人来说,有一篇关于Python Internals的文档 Yaniv Aknin 。它从头开始,具有高度可读性。

于 2011-05-09T04:17:26.790 回答
5

我发现Yaniv Aknin 的 Pythons Innards 系列 也很棒

感谢Planet Python ,我发现了它

.

您可能也对此 SO 线程中 TryPyPy 的回答感兴趣

于 2011-05-09T06:48:31.590 回答
2

我会首先阅读 Python 3 的What's New文档。它提供了一个很好的高级概述并涉及到详细的更改。

您也可以搜索“porting to python 3”或类似内容。有很多好的资源和工具。

Benjamin Peterson 编写的一种新的且难以找到的工具是6。它支持编写跨 Python 2*3 差距兼容的代码。

我发现维护 Python 2 和 Python 3 兼容代码最困难的部分是部署。我可以编写运行良好的代码,但是当我进行打包和部署时,不清楚何时应该进行转换。我最终找到了一个可以解决问题的 distutils 命令build_py_2_to_3。通过在 setup.py 中使用该命令,我可以发布将在 Python 2 或 Python 3 上部署的源代码分发。可以在 jaraco.util 中找到一个示例。

您还询问了内部结构。如果你真的想了解内部结构,你可以查看Python 2.xPython 3.x的源代码,但老实说,我会坚持阅读教程,也许还有 Python 库中的一些 .py 文件。

于 2010-07-21T11:22:19.203 回答
1

我应该采用自上而下还是自下而上的方法?

两个都!严重地。

于 2010-07-21T13:09:13.570 回答
0

你试过这个吗?

于 2010-07-21T11:22:19.117 回答