Я не утверждаю, что это будет хорошей идеей, но я обнаружил, что вы можете скомпрометировать Python (отметки 2.7 и 3.2), запустив 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 здесь не работает, и так катастрофически (почему бы не выбрасывать исключение?)