2013-07-22 83 views
0

我是班瞎搞,我想我可以尝试,使一类只是循环错误,同时运行“classloop”

这里是我做过什么:

class A(): 
    def __init__(self): 
     print 1 
     self.loop() 

    def loop(self): 
     print 2 
     self.__init__() 
A() 

它打印1 & 2回第四了一会儿,然后我得到循环开始看起来像这样一个错误:

Traceback (most recent call last): 
    File "C:/Python27/classloop.py", line 12, in <module> 
    A() 

然后开始循环,这两种错误背部和第四名:

File "C:/Python27/classloop.py", line 4, in __init__ 
    self.loop() 
File "C:/Python27/classloop.py", line 9, in loop 
    self.__init__() 

只是想知道为什么这会突然发生,为什么它不能保持循环?

+0

什么是“一段时间“? – Jiminion

+0

像400迭代身边有 – Serial

+0

最大信号递归级别meaby? –

回答

1

在Python中有一个最大递归限制。 默认值是1000 你可以看到,通过键入:在终端

import sys 
print sys.getrecursionlimit() 

如果你想增加它使用:

sys.setrecursionlimit(10000) # 10000 is just an example 
+0

哦有趣所以它只是开始,一旦递归限制传递 – Serial

+0

trowing错误好的,谢谢!! – Serial

+0

不客气 –

2

每个函数调用创建堆栈帧,每一回离开本层的框架。这意味着如果你在不返回的情况下递归得太深,Python将在堆栈中的空间不足并抛出异常。你可以增加限制,但大多数情况下,这只会让你的程序在崩溃之前运行一段时间,或者更糟的是,Python解释器会破坏它的内存并且变得疯狂。

+0

我看到谢谢! – Serial