песочница / запуск кода Python построчно

Я хотел бы быть в состоянии сделать что-то подобное этим двум:

Изобретая в принципе @ 18: 20 , Живой редактор игр ClojureScript

Если вы не хотите проверять видео, моя проблема заключается в следующем:

Скажем, у меня был этот код:

....
xs = []
for x in xrange(10):
    xs.append(x)
...

Я хотел бы создать среду, в которой я могу выполнить код, оператор для оператора и наблюдать / отслеживать локальные / глобальные переменные по мере их изменения. Может быть, дать ему список переменных для отслеживания в словарях местных / глобальных. Как пошаговое выполнение кода и сохранение информации о состоянии.

Оптимально я хотел бы сохранить каждое состояние и связанные с ним данные контекста (локальные / глобальные), чтобы я мог проверить, например, предикаты.

Я хотел бы сделать что-то вроде примера двоичного поиска Брета ВиктораИзобретая в принципе @ 18: 20

Имею ли я смысл? Мне сложно объяснить в тексте, но видео демонстрирует, что я хочу попробовать :)

Спасибо за ваше время

Что я пробовал / читал / гуглил:

code.InteractiveConsole / code.InteractiveInterpreterlivecoding модуль: кажется, работает для чистого функционального кода / кода без сохранения состоянияexec / eval магия: кажется, что я не могу получить такой тонкий контроль, как хотелось бы.trace Модуль, похоже, тоже не подходит.Python eval (compile (...), песочница), глобалы идут в песочнице, если только в def, почему? <- Это близко к тому, что я хочу, но он компилирует весь блок строки / кода и запускает его за один шаг. Если бы я мог запустить файл, как это, но проверить локальные между каждой строкой / оператором ..запускать исходный код Python построчно <- это не то, что я хочуКак Ruby и Python реализуют свои интерактивные консоли? <- Эта тема предполагает, что я смотрю вcode модуль еще немного

Мой следующий шаг будет смотреть вast и компиляция кода и запуск его по крупицам, но мне действительно нужно некоторое руководство .. Должен ли я больше смотреть на рефлексию иinspect-модуль ??

Я использовалмодель Spin раньше, но он использует свой собственный DSL, и я просто хотел бы сделать моделирование на языке реализации, в данном случае Python.

Да, и, кстати, я знаю о последствиях кода песочницы для безопасности, но я не пытаюсь создать безопасную среду выполнения, я пытаюсь создать очень интерактивную среду, нацеленную, например, на грубую проверку модели или утверждение предиката.

Ответы на вопрос(6)

Ваш ответ на вопрос