[我知道CPython有一个递归限制,在我的Python副本上是3000。
有人在进行算术评估时是否知道堆栈深度是否有限制?
CPython是否将相同的堆栈用于函数调用和评估堆栈?
[大多数其他语言都这样做,所以我认为CPython也是如此。由于CPython在堆栈上没有存储太多(几乎所有我相信的东西都保存在堆中),我想评估堆栈不需要太大吗?我搜索了https://leanpub.com/insidethepythonvirtualmachine,但找不到任何内容。
我做了一些进一步的研究,似乎CPython中存在多个评估(或价值)堆栈。例如,当CPython调用函数时,将实例化PyFrameObject,并在其中实例化该函数的评估堆栈。该堆栈的大小显然是在编译时估计的。总而言之,没有单个评估堆栈,并且每个评估堆栈的大小都是在编译时估算的。