【发布时间】:2014-09-13 23:35:12
【问题描述】:
所以在玩 Python 时,我注意到程序的堆栈大小基本上没有限制(不断对数字执行幂运算,即使达到数千位数,精度也保持完美)。这让我想知道:如果我不小心进入了 Python 中的无限递归循环怎么办?编译器会注意到并抛出堆栈溢出错误吗?还是程序会崩溃?我的 CPU 会燃烧吗?老实说,这不是我急于测试自己的事情。
【问题讨论】:
-
Python 有一个递归限制,可以通过 sys.setrecursionlimit 设置:docs.python.org/2/library/sys.html#sys.setrecursionlimit
-
那么递归就没有限制了吗? (默认)
-
Python 对象在堆上分配。您可以创建非常大的整数这一事实并不能告诉您有关堆栈大小的任何信息,因为使用的堆栈内存量与对象的大小无关。