2015-10-13 27 views
1

Python會自動終止或爲無限的「for」循環生成錯誤嗎?Python有沒有停止無限的「for」循環?

例如,將

list = [1] 

for number in list: 
    print (number + 1) 
    list.append(number + 1) 

導致程序自行終止或錯誤?

我已經測試了一下,一直到10000左右。

+2

最終你會得到一個內存錯誤,因爲該列表將會太大。 – jonrsharpe

+0

最終你會用盡你的清單內存,它會拋出一個異常,但它不會試圖打破你的循環 –

+2

我想你問的問題歸結爲這樣的問題:你知道你可以告訴Python「永遠走下去」,而且你知道它會做你說的話,但是你不知道在某個時候,一個更高級別的操作系統權威人士是否會介入,並說:「這就夠了! 」。這可能有幾個原因,但沒有人喜歡「這只是跑了太久。」搜索「搶先調度」這個術語來找出操作系統可能會中斷你的過程的更多原因。 –

回答

2

不,程序將永遠運行。它可能會崩潰,因爲你的調用棧很大(如果你在某處使用遞歸),或者你習慣於大量內存。你的例子最終會崩潰。

while True: 
    pass 

然而,沒有問題就會「永遠」運行。

+1

那麼,與打印它可能不會被凍結 –

+0

我認爲他的意思是它會似乎凍結,如果它掛起,因爲數量是如此之大 – mrdorkface

1

該程序將結束,但它會很長時間纔會結束。最終,您會爲列表運行系統內存不足,並且程序會因錯誤而崩潰。

1

它不會,除非你指定一個範圍或限制。你目前擁有它的方式會一直持續下去,直到出現內存錯誤。

此外,不要使用list作爲變量,因爲它是由python保留的函數。