我并不主张这将是一个好主意,但我发现你可以通过eval
在足够大的输入字符串上运行来使 Python 崩溃(检查 2.7 和 3.2):
def kill_python(N):
S = '+'.join((str(n) for n in xrange(N)))
return eval(S)
在我的计算机S
上可以很好地生成,但是对于大约 的值N>74900
,Python 将失败并显示Segmentation fault (core dumped)
. 解释器可以处理的字符串(或解析树)的长度是否有限制?
注意:我不需要这样做,对我来说这是一个更深层次的问题,反映了我对盒子里发生的事情的无知。我想了解为什么 Python 在这里失败了,而且是灾难性的(为什么不抛出异常?)