Дрон Кодер — программирование для детей и взрослых в игровой форме. Начать бесплатно

Что такое стек вызовов

Стек вызовов — это то, как Python помнит, какие функции сейчас выполняются и куда вернуться после каждой.

Стопка тарелок

Представьте стопку тарелок: кладёте сверху и снимаете сверху. Когда одна функция вызывает другую, вызов кладётся на верх стопки; когда функция завершилась — снимается, и управление возвращается предыдущей. Это и есть стек вызовов.

Связь с traceback

Когда возникает ошибка, Python печатает traceback — по сути снимок стека вызовов: какая функция какую вызвала, вплоть до строки с ошибкой. Читая его снизу вверх, видно путь, как программа дошла до проблемы.

Переполнение при рекурсии

У стека есть предел глубины. Если рекурсия без базового случая уходит слишком глубоко, стек переполняется и возникает ошибка (RecursionError). Отсюда правило: у рекурсии всегда должен быть базовый случай.

Частые вопросы

Зачем мне знать про стек? Он объясняет traceback и ошибки рекурсии — понимая его, легче их читать.

Что значит RecursionError? Слишком глубокая рекурсия переполнила стек вызовов; проверьте базовый случай.

Начать игру бесплатно
Попробуй прямо здесь
Уровень 1

Задание