第十七章:运行时特性-sys:系统特定配置-内存管理和限制-递归

本文介绍Python中如何通过setrecursionlimit()设置递归调用的最大深度,避免因递归过深导致的运行错误。当递归层数超过设定值时,会触发RuntimeError异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

17.2.3.3 递归
Python应用中允许无限递归,还可能会引入解释器本身的栈溢出,导致崩溃。为了消除这种情况,解释器提供了一种方法,可以使用setrecursionlimit()和getrecursionlimit()来控制最大递归深度。

import sys

print('Initial limit:',sys.getrecursionlimit())
sys.setrecursionlimit(10)

print('Modified limit:',sys.getrecursionlimit())


def generate_recursion_error(i):
    print('generate_recursion_error({})'.format(i))
    generate_recursion_error(i + 1)


try:
    generate_recursion_error(1)
except RuntimeError as err:
    print('Caught exception:',err)

一旦栈大小达到递归限制,解释器便会产生一个RuntimeError异常,使程序有机会处理这种情况。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值