2015-10-13 103 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保留的函数。