运行“classloop”时出错

2024-06-26 13:51:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我在课堂上乱搞,我想我可以试着让课堂循环一下

以下是我所做的:

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

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

打印1&;第二次和第四次有一段时间,然后我得到一个错误,开始循环,看起来像这样:

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__()

只是想知道为什么这会突然发生为什么它不继续循环


Tags: inpyselfloopinitdef错误line
2条回答

在python中有一个最大的递归限制。 默认值为1000。 您可以通过键入:

import sys
print sys.getrecursionlimit()

在候机楼

如果您想增加它的使用:

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

每个函数调用都会创建一个堆栈帧,每次返回都会从堆栈中弹出一个帧。这意味着如果递归太深而没有返回,Python将耗尽堆栈空间并抛出异常。您可以增加限制,但大多数情况下,这只会使您的程序在崩溃前运行更长时间,或者更糟的是,Python解释器会损坏其内存并发疯

相关问题 更多 >