песочница / запуск кода Python построчно
Я хотел бы быть в состоянии сделать что-то подобное этим двум:
Изобретая в принципе @ 18: 20 , Живой редактор игр ClojureScript
Если вы не хотите проверять видео, моя проблема заключается в следующем:
Скажем, у меня был этот код:
....
xs = []
for x in xrange(10):
xs.append(x)
...
Я хотел бы создать среду, в которой я могу выполнить код, оператор для оператора и наблюдать / отслеживать локальные / глобальные переменные по мере их изменения. Может быть, дать ему список переменных для отслеживания в словарях местных / глобальных. Как пошаговое выполнение кода и сохранение информации о состоянии.
Оптимально я хотел бы сохранить каждое состояние и связанные с ним данные контекста (локальные / глобальные), чтобы я мог проверить, например, предикаты.
Я хотел бы сделать что-то вроде примера двоичного поиска Брета ВиктораИзобретая в принципе @ 18: 20
Имею ли я смысл? Мне сложно объяснить в тексте, но видео демонстрирует, что я хочу попробовать :)
Спасибо за ваше время
Что я пробовал / читал / гуглил:
code.InteractiveConsole
/ code.InteractiveInterpreter
livecoding
модуль: кажется, работает для чистого функционального кода / кода без сохранения состоянияexec
/ eval
магия: кажется, что я не могу получить такой тонкий контроль, как хотелось бы.trace
Модуль, похоже, тоже не подходит.Python eval (compile (...), песочница), глобалы идут в песочнице, если только в def, почему? <- Это близко к тому, что я хочу, но он компилирует весь блок строки / кода и запускает его за один шаг. Если бы я мог запустить файл, как это, но проверить локальные между каждой строкой / оператором ..запускать исходный код Python построчно <- это не то, что я хочуКак Ruby и Python реализуют свои интерактивные консоли? <- Эта тема предполагает, что я смотрю вcode
модуль еще немногоМой следующий шаг будет смотреть вast
и компиляция кода и запуск его по крупицам, но мне действительно нужно некоторое руководство .. Должен ли я больше смотреть на рефлексию иinspect
-модуль ??
Я использовалмодель Spin раньше, но он использует свой собственный DSL, и я просто хотел бы сделать моделирование на языке реализации, в данном случае Python.
Да, и, кстати, я знаю о последствиях кода песочницы для безопасности, но я не пытаюсь создать безопасную среду выполнения, я пытаюсь создать очень интерактивную среду, нацеленную, например, на грубую проверку модели или утверждение предиката.