python - python 内置函数是否总是 C 扩展(即使在 PyPy 上)?

标签 python abstract-syntax-tree cpython pypy built-in

我正在为 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 docsthis blog post这描述了 PyPy 中的 AST 功能反射(reflect)了 CPython 中的功能。

关于python - python 内置函数是否总是 C 扩展(即使在 PyPy 上)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9936821/

相关文章:

python - 如何在 'eval'模式下编译ast节点

c++ - 声明后如何获取变量及其大小?

python - Python 垃圾收集函数范围内不再引用的变量吗?

python - 如何快速检查 numpy 数组的所有元素是否都是 float ?

python - 从 python 列表中获取值序列

python - csv文件的真实行数

python - map 与星图的性能?

python - 使用补丁线程与原生 gevent greenlets 的缺点?

c - 如何输出使用 ANTLR 构建的 AST?

python - CPython 中 os.stat() 在哪里定义?