我已经了解了CPython是如何基于堆栈的.这是什么意思?当我使用dis模块时,我看到LOAD_FAST等操作,其中值放在堆栈上.但我已经读过python中的所有值都是对象,因此进入堆中.我想我在这里混淆了两件不同的事情.我还读到有一种叫做无堆栈的python.有人可以澄清一下吗?
最流行的python解释器CPython可以被视为基于堆栈的虚拟机.这意味着python代码是为具有堆栈体系结构的虚拟(虚拟)计算机编译的.
另一方面是如何实现此虚拟机.它显然不是一块硬件(并且处理器制造商尝试添加对某些虚拟机的支持,例如JVM,通常不会成功).因此,这个堆栈机器由用C编写的程序模拟,它是CPython解释器的一部分.
关于堆栈和堆如何共存,现在应该清楚 - 虚拟机和堆栈都放在堆内存中.使用从虚拟机的角度LOAD_FAST
将对象放置在堆栈顶部,并且从OS的角度来看,同一指令将对象放在堆中.