2010-09-20 5 views
1

Heyo,Python мета-отладки

Только начал писать ассемблер для воображаемого компьютера мой класс создает провод по проводам, так как один ТА, при условии, отстой трудно. Я выбрал python, хотя я никогда не использовал его так сильно (но знаю базовый синтаксис) и люблю его.

Моя любимая способность - то, как я могу взять метод, который я только что написал, вставить в оболочку, а затем проверить его вручную (я использую IDLE).

Мне просто интересно, есть ли способ полностью отобразить все символы в моем питонном коде для оболочки, поэтому я могу отлаживать без копирования и вставки моего кода в оболочку каждый раз (особенно когда я делаю модификацию в коде).

Приветствия

ответ

1

вы можете импортировать модуль, что ваш код находится в. Это выставит все символы с префиксом имени модуля.

Детали для простого способа сделать это зависит от вашей операционной системы, но вы всегда можете сделать:

>>> sys.path.append('/path/to/directory/that/my/module/is/in/') 
>>> import mymod #.py 

позже после того, как вы сделаете изменения, вы можете просто сделать

>>>> reload(mymod) 

и символы теперь будут ссылаться на новые значения. Обратите внимание, что from mymod import foo сломает reload в том смысле, что foo будет не будет обновлен после звонка reload. Так что просто используйте mymod.foo.

Суть в том, чтобы получить каталог, содержащий файл, в переменной окружения PYTHONPATH. Вы можете сделать это из .bashrc в Linux, например. Я не знаю, как это сделать в другой операционной системе. Я использую virualenv с командой nice wrapper и workon, поэтому мне просто нужно ввести workon foo и она запускает сценарии оболочки (которые мне пришлось писать), которые добавляют необходимые каталоги в мой путь к python.

Когда я только начинал, я сделал одно постоянное дополнение к моей переменной PYTHONPATH env и сохранил модуль, который я написал там.

Другой вариант - выполнить ваш модуль с помощью опции -i.

$ python -i mymod.py 

Это выполнит модуль до завершения, а затем оставит вас у переводчика. это не просто IDLE, но это немного грубо, но теперь вы находитесь в пространстве имен вашего модуля (точнее, пространство имен модулей является глобальным пространством имен)

+0

модуль будучи исходный файл? – mamidon

+0

@ Lanissum. верный. если ваш исходный файл - «mymod.py», тогда «import mymod» – aaronasterling

+0

@ отлично, спасибо! – mamidon

0

Check IPython. Это улучшенная интерактивная оболочка Python. Вы можете использовать свой скрипт, и он автоматически выведет все ваши глобальные объекты в оболочку. Он очень прост в использовании и силен. Вы можете даже отлаживать свой код, используя его.

Например, если ваш скрипт:

import numpy as np 
def f(x): 
    return x + 1 

Вы можете сделать следующее:

%run yourScript.py 
x = np.eye(4) 
y = f(x)