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