7

我正在为 Python 开发一个文档 API,我正在调用Python Docs,我注意到几乎所有的内置插件都不能被我的静态分析套件访问,因为它们几乎完全是 C 模块。据我记得,我想不出这条规则有任何例外。

我的问题的第一部分很简单,作为内置模块是否预先假定是 CPython 中的 C 扩展?

假设可能是这种情况,我编译了一个新的 pypy 运行时并尝试将我的项目与 pypy 的内置插件一起使用。我惊讶地发现这也不起作用。

如果 PyPy 模块是纯 Python,为什么它们不是可用的 AST 对象?这是 PyPy 托管在 JIT 上的副作用吗?

4

1 回答 1

4

PyPy 由两部分组成——Python 解释器和翻译工具链。

翻译工具链将解释器从 RPython 翻译/“编译”成机器代码。

因此,尽管 PyPy 是用一种 Python 子集的语言编写的,但当您使用它时,它并不是 Python。

您应该阅读PyPy Parser 文档的编译器部分这篇博客文章,其中描述了 PyPy 中的 AST 特性反映了 CPython 中的特性。

于 2012-03-30T04:14:16.083 回答