Раздел 45 · Python backend: Тарбадель

Функции в VM: кадры и ячейки

middle-senior~40 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

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

В tree-walk интерпретаторе урока 80 вызов функции программы был вызовом функции Python: evaluate звал call, тот execute_block, тот снова evaluate, и стопку вызовов держал за тебя сам Python. Машина байткода так не может, и не должна. Сегодня она получит свою стопку кадров, слоты для локальных имён и ячейки для замыканий. И программа на ней уйдёт в рекурсию на 900 вызовов, ни разу не углубив стек Python.

урок из курса

Урок из курса «Python backend: Тарбадель». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.