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异常,使程序有机会处理这种情况。