Python 3.5+Исключенияисключение
RecursionError
встроенные исключения
Вызывается при превышении максимальной глубины рекурсии (по умолчанию 1000). Подкласс RuntimeError.
Синтаксис
raise RecursionError('...')
Почти всегда причина не в маленьком лимите, а в пропущенном или недостижимом базовом случае; поднимать sys.setrecursionlimit() безопасно только если рекурсия точно конечная — иначе процесс упадёт уже по-настоящему, без шанса перехватить. Лимит один на весь стек интерпретатора, поэтому кадры библиотечных вызовов расходуют его наравне с вашими. И раз это подкласс RuntimeError, except RuntimeError поймает его заодно — иногда неожиданно.
Примеры
def infinite():
return infinite()
try:
infinite()
except RecursionError:
print('слишком глубокая рекурсия')
import sys
sys.setrecursionlimit(2000) # изменить лимит
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности