我并不推荐这么做,但我发现如果在Python中运行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会在这里失败,而且失败得如此惨烈(为什么不抛出异常?)
sum(xrange(75000))
看起来运行得很好。 - inspectorG4dget