私はこれが今まで良いアイデアだと主張していないんだけど、私はあなたが十分な大きさの入力文字列に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はどのような状況でもバグとみなされるため、発生しないようにしてください。これは[バグレポート](http://bugs.python.org/)の価値があります。 –
@Lattyware:ほとんどの場合、すべてではありません。しかし、これはバグとみなすべきです。 –
興味深いことに、 'sum(xrange(75000))'はうまく動いているようです。 – inspectorG4dget