我不主张,这将永远是一个好主意,但我发现,您可以通过在一个足够大的输入字符串运行eval
崩溃的Python(2.7和3.2选中):为什么python的eval有长度限制?
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在这里失败,并且如此灾难性地(为什么不抛出异常?)
IIRC,Python解释器segfaulting在任何情况下都被认为是一个bug,不应该发生 - 这可能值得[bug报告](http://bugs.python.org/)。 – 2012-07-24 16:26:11
@Lattyware:在大多数情况下,不是全部。但是这个*应该被认为是一个错误。 – 2012-07-24 16:27:33
有趣的是,'sum(xrange(75000))'似乎工作得很好 – inspectorG4dget 2012-07-24 16:27:39