python内置是否总是C扩展(甚至在PyPy上)?

python内置是否总是C扩展(甚至在PyPy上)?,python,abstract-syntax-tree,cpython,pypy,built-in,Python,Abstract Syntax Tree,Cpython,Pypy,Built In,我正在为调用的Python编写一个文档API,我注意到几乎所有的内置组件都不能被我的静态分析套件访问,因为它们几乎都是C模块。就我记忆所及,我想不出这条规则有任何例外 我的问题的第一部分很简单,作为一个内置模块是否需要在CPython中作为一个C扩展 假设情况可能是这样,我编译了一个新的pypy运行时,并尝试将我的项目与pypy中的内置项一起使用。我惊讶地发现,这也不起作用 如果PyPy模块是纯Python的,为什么它们不能用于AST对象?这是PyPy托管在JIT上的副作用吗?PyPy由两部分组

我正在为调用的Python编写一个文档API,我注意到几乎所有的内置组件都不能被我的静态分析套件访问,因为它们几乎都是C模块。就我记忆所及,我想不出这条规则有任何例外

我的问题的第一部分很简单,作为一个内置模块是否需要在CPython中作为一个C扩展

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

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

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

翻译工具链将来自RPython的解释器翻译/编译为机器代码

因此,尽管PyPy是用Python的一个子集语言编写的,但使用Python时它不是Python


您应该阅读和,它描述了PyPy中的AST功能与CPython中的功能相似。

@mvanveen您的第一个问题到底是什么——是所有CPython内置函数和类型都是用C实现的(是),还是CPython中包含的所有标准库模块都是用C实现的(否,许多是用Python实现的)?因为我不知道你说的“内置模块”是什么意思。前者。谢谢你的回答!作为一般规则,高级语言中的基本操作和类型必须“烘焙”到语言实现中,因为如果它们不是以某种方式神奇地提供的,就没有办法在高级语言中实现它们。e、 g.尝试在Python中实现
int
,而不使用内置支持。