最大递归与sys.getrecursionlimit()所声称的不完全相同。怎么来的?

最大递归与sys.getrecursionlimit()所声称的不完全相同。怎么来的?,第1张

最大递归与sys.getrecursionlimit()所声称的不完全相同。怎么来的?

递归限制不是递归限制,而是python解释堆栈的最大深度。执行函数之前,堆栈中有一些东西。Spyder会在调用脚本之前执行一些python东西,其他像ipython这样的解释器也会这样做。

您可以通过

inspect
模块中的方法检查堆栈。

在CPython中:

>>>print(len(inspect.stack()))1

在我的Ipython中:

>>>print(len(inspect.stack()))10

正如knbk在注释中指出的那样,只要您达到堆栈限制,就会引发RecursionError,并且解释器会稍微提高堆栈限制,使您可以优雅地处理错误。如果您还用尽了该限制,python将崩溃。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5674463.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存