我已经阅读了 CPython 是如何基于堆栈的。这是什么意思?当我使用 dis 模块时,我看到像 LOAD_FAST 等操作,其中值放在堆栈上。但我读到 python 中的所有值都是对象,因此进入堆。我想我在这里混淆了两件不同的事情。我还读到有一种叫做 stackless python 的东西。有人可以澄清一下吗?
最佳答案
最流行的 Python 解释器 CPython 可以看作是基于堆栈的虚拟机。这意味着 python 代码是为具有 stack architecture 的假想(虚拟)计算机编译的。 .
另一方面就是这个虚拟机是如何实现的。它显然不是一个硬件(处理器制造商试图添加对某些虚拟机的支持,例如 JVM,are usually not successful)。因此,这个堆栈机器是由用 C 编写的程序模拟的,它是 CPython 解释器的一部分。
关于栈和堆是如何共存的,现在应该很清楚了——虚拟机和栈,都是放在堆内存中的。使用 LOAD_FAST
从虚拟机的角度将对象放置在堆栈的顶部,并且从操作系统的角度相同的指令将对象放置在堆中观点。
关于python - python是基于堆栈的是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34149013/