Python會自動終止或爲無限的「for」循環生成錯誤嗎?Python有沒有停止無限的「for」循環?
例如,將
list = [1]
for number in list:
print (number + 1)
list.append(number + 1)
導致程序自行終止或錯誤?
我已經測試了一下,一直到10000左右。
Python會自動終止或爲無限的「for」循環生成錯誤嗎?Python有沒有停止無限的「for」循環?
例如,將
list = [1]
for number in list:
print (number + 1)
list.append(number + 1)
導致程序自行終止或錯誤?
我已經測試了一下,一直到10000左右。
不,程序將永遠運行。它可能會崩潰,因爲你的調用棧很大(如果你在某處使用遞歸),或者你習慣於大量內存。你的例子最終會崩潰。
while True:
pass
然而,沒有問題就會「永遠」運行。
那麼,與打印它可能不會被凍結 –
我認爲他的意思是它會似乎凍結,如果它掛起,因爲數量是如此之大 – mrdorkface
該程序將結束,但它會很長時間纔會結束。最終,您會爲列表運行系統內存不足,並且程序會因錯誤而崩潰。
它不會,除非你指定一個範圍或限制。你目前擁有它的方式會一直持續下去,直到出現內存錯誤。
此外,不要使用list
作爲變量,因爲它是由python保留的函數。
最終你會得到一個內存錯誤,因爲該列表將會太大。 – jonrsharpe
最終你會用盡你的清單內存,它會拋出一個異常,但它不會試圖打破你的循環 –
我想你問的問題歸結爲這樣的問題:你知道你可以告訴Python「永遠走下去」,而且你知道它會做你說的話,但是你不知道在某個時候,一個更高級別的操作系統權威人士是否會介入,並說:「這就夠了! 」。這可能有幾個原因,但沒有人喜歡「這只是跑了太久。」搜索「搶先調度」這個術語來找出操作系統可能會中斷你的過程的更多原因。 –