我使用Python进行编程的时间已经超过半年了,我对Python内部结构更感兴趣,而不是使用Python来开发应用程序。目前我正在努力将一些库从Python2移植到Python3。但是,我对如何从Python2到Python3进行端口操作有一个相当抽象的观点,因为大多数更改都涉及Python2.x中的设计问题
我想了解更多关于Python内部的知识;我应该采用自上而下还是自下而上的方式?有没有可以推荐的参考资料?
答案 0 :(得分:35)
听起来你想要更多地了解语言设计背后的基本原理,而不是内部。对我来说,“内部”意味着如何在内存中布置对象,引用计数如何工作等等。
如果您正在寻求对设计决策有更深入的了解,请尝试阅读PEPs:它们是语言变更的提案,并且通常包含对变更原因的详细讨论,拒绝替代方案, 等等。即使被拒绝的PEP也很有用,因为它们表明了形成语言的思想。
例如:
依旧......
如果你真的想学习Python内部,那么首先要阅读Python C API,它用于构建Python本身:我的谈话A Whirlwind Excursion through Python C Extensions是一个开始的地方。然后,您可以深入了解Python源代码本身,以获取您需要了解的任何内容。
答案 1 :(得分:15)
对于从相关链接或搜索中绊倒此问题的人,有Python Internals的文件由Yaniv Aknin撰写。它从头开始,具有很高的可读性。
答案 2 :(得分:5)
我找到Yaniv Aknin's Pythons Innards series系列 太棒了
我发现它归功于Planet Python
您可能也对this SO thread
中TryPyPy的答案感兴趣答案 3 :(得分:2)
我首先阅读Python 3的What's New文档。它提供了一个很好的高级概述,并触及了详细的更改。
您也可以搜索“移植到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文件
答案 4 :(得分:1)
我应该采用自上而下还是自下而上的方法?
两个!严重。
答案 5 :(得分:0)