gpt4 book ai didi

python - 为什么 Python 在超过实际递归限制之前引发 RecursionError?

转载 作者:行者123 更新时间:2023-11-28 20:13:03 26 4
gpt4 key购买 nike

所以我尝试使用 sys.getrecursionlimit()sys.setrecursionlimit() 方法。默认递归限制为 3000

我尝试使用以下代码对其进行检查:

def recursive(n):
print(n)
recursive(n+1)
recursive(0)

它确实将数字打印到 2979,它延迟了一秒钟,打印 2980,然后引发 RecursionError

RecursionError: maximum recursion depth exceeded while calling a Python object

我知道当它超过 sys.getrecursionlimit() 返回的递归限制时应该引发错误,但它没有

似乎它总是在递归限制之前执行 20 次

我也试过这个:

sys.setrecursionlimit(100)
def recursive(n):
print(n)
recursive(n+1)
recursive(0)

它仍然做同样的事情,将所有数字打印到 79,延迟一秒钟,打印 80,然后引发完全相同的错误

为什么它会在超过我们通过 sys.getrecursionlimit() 设置或获取的实际递归限制之前引发错误?

最佳答案

您的 recursive() 函数不是唯一计入限制的组件。一些 Python 内部结构也会增加计数器,因为 Python 代码也会导致它们被多次调用。 print() 函数就是其中之一。

底线是递归限制不仅适用于您编写的 Python 函数。它适用于整个调用堆栈

关于python - 为什么 Python 在超过实际递归限制之前引发 RecursionError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55560258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com