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

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

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

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

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

Связь с traceback

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

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

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

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

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

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

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

Задание

Все обучающие игры «Дрон Кодер»

Одна вселенная — много модулей. Программирование, математика и логика в одной игре: пиши код, считай, решай задачи — а дрон-фермер летит по полю и собирает урожай. В каждом модуле первый уровень бесплатный, без регистрации.

📈 Математика · алгебра и графики
📖 Русский язык