我怎样才能更多地了解 Python 的内部结构? [关闭]
Posted
技术标签:
【中文标题】我怎样才能更多地了解 Python 的内部结构? [关闭]【英文标题】:How can I learn more about Python’s internals? [closed] 【发布时间】:2011-03-18 22:16:14 【问题描述】:我已经使用 Python 编程半年多了,我对 Python 内部结构更感兴趣,而不是使用 Python 来开发应用程序。目前我正在将一些库从 Python2 移植到 Python3。但是,我对如何将 Python2 移植到 Python3 有一个相当抽象的观点,因为大多数更改都涉及 Python2.x 中的设计问题
我想了解更多关于 Python 内部的信息;我应该采用自上而下还是自下而上的方法?有什么可以推荐的参考资料吗?
【问题讨论】:
您能解释一下为什么您认为您需要了解有关 Python(2.x?3.x?两者)的内部结构才能将代码从 2 移植到 3?跨度> 也许问题不够清楚(抱歉!)。我目前没有发现移植库有任何困难,只是我想更好地了解 Python 内部结构。我只是好奇这些东西是如何在幕后工作的。我想知道自上而下或自下而上的方法是否会更好。另外,如果有人可以建议相同的资源。 @uki 的答案非常晚,但我会把它放在这里,供任何可能仍然感兴趣的人使用。 Inside The Python Virtual Machine 提供了足够详细的 Python 内部结构。 【参考方案1】:我找到了Yaniv Aknin's Pythons Innards series的系列 太棒了
感谢Planet Python,我发现了它
.
您可能对this SO threadTryPyPy 的回答也感兴趣
【讨论】:
将 Pythons Innards 链接替换为:web.archive.org/web/20120225020122/https://en.wordpress.com/tag/… 也许这就是 Yaniv Aknin 的 Pythons Innards 系列已经搬家了:tech.blog.aknin.name/category/my-projects/pythons-innards【参考方案2】:对于从相关链接或搜索中偶然发现此问题的人,Python Internals 上写有 Yaniv Aknin 的文档。它从头开始,具有高度可读性。
【讨论】:
【参考方案3】:我应该采用自上而下还是自下而上的方法?
两者都有!认真的。
【讨论】:
【参考方案4】:听起来您想更多地了解语言设计背后的基本原理,而不是内部原理。 “内部”对我来说意味着对象在内存中的布局方式、引用计数的工作方式等等。
如果您想更深入地了解设计决策,请尝试阅读PEPs:它们是语言更改的建议,通常包括更改原因的详细讨论、被拒绝的替代方案以及很快。即使是被拒绝的 PEP 也很有用,因为它们展示了塑造语言的思想。
例如:
3105: Making print a function 3110: Catching exceptions in Python 3.x 3131: Supporting non-ASCII identifiers等等..
如果您真的想了解 Python 内部结构,请先阅读 Python C API,它用于构建 Python 本身:我的演讲 A Whirlwind Excursion through Python C Extensions 是一个起点。然后,您可以深入了解 Python 源代码本身,了解您需要了解的任何内容。
【讨论】:
坚持 Ned 的主题,您可以直接从马口中获得一些设计决策背后的历史 - python-history.blogspot.com 为什么有些答案这么酷!!!【参考方案5】:我会首先阅读 Python 3 的 What's New 文档。它提供了一个很好的高级概述并涉及到详细的更改。
您也可以搜索“porting to python 3”或类似内容。有很多很好的资源和工具。
本杰明·彼得森 (Benjamin Peterson) 的 six 是一个很难找到的新工具。它支持编写跨越 Python 2*3 差距的兼容代码。
我发现维护与 Python 2 和 Python 3 兼容的代码最困难的部分是部署。我可以编写运行良好的代码,但是当我进行打包和部署时,不清楚何时应该进行转换。我最终找到了一个 distutils 命令build_py_2_to_3
可以解决问题。通过在我的 setup.py 中使用该命令,我可以发布将在 Python 2 或 Python 3 上部署的源代码分发。An example 可以在 jaraco.util 中找到。
您还询问了内部结构。如果你真的想了解内部结构,你可以查看 Python 2.x 和 Python 3.x 的源代码,但老实说,我会坚持阅读教程,也许还有 Python 库中的一些 .py 文件。
【讨论】:
我在移植库时没有任何问题。我熟悉 如何 移植库。我想就采取何种方法来理解 Python 内部结构提供一些帮助。抱歉,如果问题不清楚。【参考方案6】:你试过了吗?
Automated Python 2 to 3 code translation【讨论】:
是的。但是 2to3 并没有处理所有的变化。另外,进行转换不是我的问题;我想从更基本的层面了解这些变化。 噢,真的不应该投反对票,这只是一个误会。投票补偿。以上是关于我怎样才能更多地了解 Python 的内部结构? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
python中@property@setter和@deleter