我怎样才能更多地了解Python的内部?

我已经使用Python进行了半年多的编程,我对Python内部更感兴趣,而不是使用Python开发应用程序。 目前我正在从Python2移植一些库到Python3。 然而,对于如何将端口从Python2转换到Python3,我有一个相当抽象的看法,因为大部分的改变都是在Python2.x中处理devise问题

我想了解更多关于Python内部的知识。 我应该采取自上而下还是自下而上的方法? 有什么可以推荐的参考?

这听起来像你想要更多地了解语言devise背后的原理,而不是内部。 对我而言,“内部”意味着如何在内存中布置对象,如何引用计数等等。

如果您希望更深入地了解devise决策,请阅读PEP :它们是语言变化的build议,通常包括对变更原因的详细讨论,拒绝的替代scheme等等。 即使是被拒绝的PEP也是有用的,因为它们显示了塑造语言的思维。

例如:

  • 3105:打印一个function
  • 3110:捕捉Python 3.x中的exception
  • 3131:支持非ASCII标识符

等等..

如果您真的想了解Python内部知识,那么请先阅读用于构buildPython本身的Python C API:我的讲话一个通过Python C扩展的Whirlwind Excursion是一个开始的地方。 然后,您可以深入了解Python源代码,了解您需要了解的任何内容。

对于从相关链接或search中绊倒这个问题的人来说,在Python内部有一篇关于Yaniv Aknin的文档。 它从头开始,高度可读。

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

我发现这要感谢Planet Python

TryPyPy在这个线程中的答案可能也是你感兴趣的

我将首先阅读Python 3 的新增function(What's New)文档。它提供了一个很好的高层次概述,并触及了详细的变化。

你也可以search“移植到python 3”或类似的东西。 有很多很好的资源和工具。

本杰明·彼得森(Benjamin Peterson)提出了一个新的,很难find的工具。 它可以编写与Python 2 * 3差距兼容的代码。

我发现维护Python 2和Python 3兼容代码最困难的部分是部署。 我可以编写可以正常运行的代码,但是当我去做包和部署时,不知道何时应该进行转换。 我最终发现了一个distutils命令build_py_2_to_3 ,可以做到这一点。 通过在我的setup.py中使用该命令,我可以发布一个可以在Python 2或Python 3上部署的源代码发行版。可以在jaraco.util中find一个例子 。

你也问了内部。 如果你真的想要了解内部,你可以查看Python 2.x和Python 3.x的源代码,虽然老实说,我会坚持阅读教程,也许是Python库中的一些.py文件。

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

都! 认真。

你尝试过吗?

  • 自动化的Python 2到3代码翻译