Bunun hiç iyi bir fikir olacağını savunan değilim, ama yeterince büyük bir giriş dizesi eval
çalıştırarak Python (2.7 ve 3.2 işaretli) çökmesine olabileceğini saptadık:Python'un değerlendirmesine neden bir uzunluk sınırı var?
def kill_python(N):
S = '+'.join((str(n) for n in xrange(N)))
return eval(S)
Açık Bilgisayarım S
sadece iyi oluşturulabilir, ancak yaklaşık N>74900
değerleri için Python Segmentation fault (core dumped)
ile başarısız olur. Tercümanın işleyebileceği dizgenin (veya ayrıştırma ağacının) uzunluğunun bir sınırı var mı?
Not: Bunu yapmak için gerek yok, bana bu kutunun içinde neler olup bittiğinin benim cehalet yansıtan derin bir sorudur. Python'un neden başarısız olduğunu ve neden bu kadar yıkıcı olduğunu (neden bir istisna atmamalı?) Anlamayı isterim.
IIRC, Python yorumlayıcısı segfaultmanı her durumda bir hata olarak kabul edilir ve olmamalıdır - bu bir [hata raporu] (http://bugs.python.org/) değerinde olabilir. –
@Lattyware: Çoğu durumda, hepsi değil. Ama bu bir * bir böcek olarak görülmelidir. –
İlginç bir şekilde, 'sum (xrange (75000))' gayet iyi çalışıyor gibi görünüyor – inspectorG4dget