我正在为 Python 编写一个文档 API,我正在调用 Python Docs ,而且我注意到我的静态分析套件几乎无法访问所有内置函数,因为它们几乎完全是 C 模块。据我所知,我想不出这条规则有任何异常(exception)。
我的问题的第一部分很简单,作为内置模块是否预先假定是 CPython 中的 C 扩展?
假设可能是这种情况,我编译了一个新的 pypy 运行时并尝试将我的项目与 pypy 的内置函数结合使用。我惊讶地发现这也不起作用。
如果 PyPy 模块是纯 Python,为什么不能使用 AST 对象?这是 PyPy 托管在 JIT 上的副作用吗?
最佳答案
PyPy 由两部分组成——Python 解释器和翻译工具链。
翻译工具链将解释器从 RPython 翻译/“编译”为机器代码。
因此,尽管 PyPy 是用 Python 的子集语言编写的,但当您使用它时,它并不是 Python。
您应该阅读 compiler section of the PyPy Parser docs和 this blog post这描述了 PyPy 中的 AST 功能反射(reflect)了 CPython 中的功能。
关于python - python 内置函数是否总是 C 扩展(即使在 PyPy 上)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9936821/