Выбор, когда выполнять в Python

1

Я студент, пишущий сценарий Python для достижения следующего:

Учитывая файл.py (который включает в себя схему рисования из pygame), покажите код во время его выполнения вместе с кадром, который отображает чертежи. Я пишу это как инструмент для профессора, чтобы легче преподавать алгоритмы, будучи способным одновременно демонстрировать код и его результат.

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

Один из методов, который я рассмотрел, - это использование функций exec() и eval() при выполнении кода из предоставленного исходного файла. В этом исследовании я нашел общее мнение о том, что exec и eval очень запутывают и часто небезопасны (хотя я буду контролировать входные данные). С помощью этого метода я буду последовательно переходить через источник, ища ветки или логику принятия решений, которые могут повлиять на то, что должно быть выполнено.

Есть ли лучший способ использовать, чем это?

  • 2
    Перезапустите существующий отладчик. exec работает с законченными модулями (или, по крайней мере, с полными блоками), вам придется эмулировать ветвление, циклы, области видимости и т. д. - так много, что в итоге вы напишите половину интерпретатора Python.
  • 2
    Вы хотите отладчик, посмотрите на отладчик. Посмотрите, как реализован pdb stdlib.
Теги:
pygame
debugging
exec
eval

1 ответ

0
Лучший ответ

Почему бы вам не включить сам отладчик python в свою программу и выполнить его в нем - и использовать его крючки для графического отслеживания текущей строки?

Я также видел, как кто-то внедрял интерпретатор ironPython в свою программу - и вы, вероятно, можете отслеживать текущий исполняемый код в нем и передавать его в графический интерфейс.

http://writeonly.wordpress.com/2008/09/08/embedding-a-python-shell-in-a-python-script/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню