Если у Вас есть проблемы с синтаксисом, Вы могли бы судить редактора подсветкой синтаксиса. Пока Вы не привыкнете для языка, простые ошибки не будут просто всплывающий в Вас.
самая простая форма отладки должна только вставить некоторые операторы печати. Более усовершенствованное (и расширяемый) способ сделать это должно было бы использовать вход модуль от lib станд.
интерактивный интерпретатор является замечательным инструментом для работы с кодом Python, и , IPython является большим улучшением по сравнению со встроенным REPL (Цикл Печати Оценки Чтения).
, Если Вы на самом деле хотите ступить через свой код, отладчик Python называют pdb, который можно назвать из командной строки или встроить в Ваш код.
, Если бы Вы привыкли к полностью интегрированному IDE, я рекомендовал бы использовать Eclipse с pydev, и PyCharm имеет большое коммерческое предложение, с автоматическим заполнением, быстрым доступом к документам и многочисленными ярлыками, среди многих других интересных функций.
Python-m pdb yourcode.py должен сделать это. Кроме того, можно "импортировать pdb" в коде и использовать pdb.set_trace () для установки точек останова. Отошлите руководство для большего количества информации: http://www.python.org/doc/2.5.2/lib/module-pdb.html
Плагин PyDev для затмения является моим предпочтительным инструментом. Это распознает простые ошибки синтаксиса и ошибки добавления отступа и подчеркивает ошибку с красной строкой. Это имеет мощный отладчик и даже имеет плагин под названием PyLint, который предупреждает Вас об опасном коде.
Редактирование: Это также имеет удобное для пользователя отслеживание стека на ошибках периода выполнения, неравнодушных автоматический завершенный и некоторые другие изящные функции.
Редактирование снова: Я не заметил, что pydev был упомянут в лучшей публикации. Я надеюсь, что принес что-то еще к таблице.
Ошибки Identifing перед выполнением являются доменом статической проверки/анализа. Мне везло с помощью PyChecker для основной статической проверки кода Python.
pycheesecake сайт имеет очень хорошее сводка инструментов тестирования для Python.
Я настроил Python для автоматического запуска отладчика, когда существует неперехваченное исключение, с помощью этот прием . Тем путем можно легко исследовать состояние программы без слишком большого количества регистрирующегося кода. (Плюс, для отправки меня уведомление о Рычании.)
, О, и этот путь можно просто создать точку останова в коде путем добавления
if answer == 42:
1/0
Как правило, я просто использую набор операторов печати.
page = grabpage(url)
print "Page content:", page
print "page type():", type(page)
иногда полезно сделать что-то как:
debug = True
if debug: print "page content", page
.. с этим можно быстро отключить все операторы печати отладки путем замены отладки ко Лжи.
, В то время как отладка печати получит Вас очень далеко в большинстве случаев, иногда трудно отладить вещи как циклы или серию if/else/try/except/etc. Для этого отладчик, который позволяет ступать, хотя Ваш код и устанавливающие точки останова полезны.
pdb
включен с Python. Здесь хорошее простое учебное руководство на нем. Можно даже сделать вещи как замена переменных во время времени выполнения (который учебное руководство касается). Более длинное учебное руководство может быть найдено здесь
существует очень хороший GUI эквивалентный pdb - Winpdb
В основном, Вы работаете winpdb myscript --arg 4 -b 4
тогда, это загружает команду в терминале, показывает Вам Ваш код слева, с током, списком локальных / глобальных переменных (и их значения) и текущий стек вызовов.
Тогда можно ступить хотя код путем нажатия на Step (или F6). F5 выполняет код. Если Вы нажимаете рядом с номерами строки, это устанавливает точку останова, куда код автоматически ступит (когда Вы тираж).
я нахожу намного легче использовать, и это имеет много дополнительных улучшений (как удаленная отладка, таким образом, можно выполнить часть бэкенда (rpdb2
) в отлаженном будущим образом приложении и подключить Winpdb к (зашифрованному). Это также имеет поддержку поточной обработки и других полезных вещей не в PDB. У Вас есть доступ к подобной pdb консоли также.
Протестируйте рано и часто тестируйте.
Это не обязательно означает вскакивать в тест, который управляемый пул дизайна возглавляет сначала (хотя это не такая плохая идея). Это просто означает, протестируйте свои объекты и методы, как только у Вас есть что-то, что работает. Не ожидайте, пока у Вас не будет огромной груды кода прежде, чем сделать тестирование.
Инвестируют некоторое время в изучение среды тестирования. Если это будет тривиально для Вас для ввода в тестовом сценарии, то Вы более вероятно сделаете это. Если у Вас нет вида тестирования платформы, может быть боль, таким образом, Вы избежите его. Так, установите некоторые хорошие привычки вначале, и у Вас будет меньше проблем в будущем.
Python обеспечивает отладчик, который позволяет Вам ступать через Ваш код, осматривать переменные и управлять ими. Обратитесь к http://pythonconquerstheuniverse.wordpress.com/category/python-debugger/ , который может взять Вас по шагам...
Также проверяют справочное руководство по библиотеке стандарта Python на pdb http://www.python.org/doc/2.5.2/lib/module-pdb.html
Весь действительно интересный материал легко продемонстрирован в интерактивном интерпретаторе. Я думаю, что это могло бы быть "золотым стандартом" для хорошего дизайна:
можно ли осуществить класс в интерактивном режиме?
, Если можно сделать материал в интерактивном режиме, тогда можно записать unittests и doctests с уверенностью, что это является тестируемым, простым, надежным.
И, что более важно, можно исследовать его в интерактивном режиме. Нет ничего лучше, чем мгновенное удовлетворение, которое прибывает из ввода кода и наблюдения точно, что происходит.
скомпилированные привычки языка (пишут набор материала, отлаживают набор материала, тестируют набор материала) могут быть оставлены позади. Вместо этого можно записать определенный материал, исследовать его, записать формальный тест и затем присоединить Ваш немного материала к растущему заключительному проекту.
Вы все еще делаете общий замысел. Но Вы не тратите код записи времени, который может или не может работать. В Python Вы пишете код, который работает. Если Вы не уверены, Вы играете с ним в интерактивном режиме, пока Вы не уверены. Тогда Вы пишете код, который работает.
Вот некоторые методы для упрощения отладки в Python:
используют интерактивную оболочку, например, ipython. Python является динамическим языком, можно исследовать код, как Вы вводите. Оболочка работает во втором окне в моем редакторе в любом случае.
вставка копии от оболочки в docstrings код, который иллюстрирует доминирующее использование и угловые случаи функции (класс, модуль). doctest.testmod()
помещенный в if __name__=="__main__"
раздел позволяет тестировать все docstrings в модуле. doctest может быть легко интегрирован с unittest.
использование assert
для материала, которого никогда не может происходить.
print()
может решить много проблем отладки; вход модуль подходит для долго живущих процессов Python.
тесты записи (не обязательно перед Вашим кодом), выполняет их часто (автоматически или с одним нажатием клавиши самое большее); нос обеспечивает расширенное тестовое открытие и рабочие функции unittest.
работает pylint иногда.
В этой точке существует немного использования для формального отладчика Python. Winpdb является внешним многоплатформенным отладчиком Python GUI GPL'ed при необходимости в том.
Существует очень хороший графический отладчик для Python, который называется Winpdb . Попробуйте это. Встроенный в библиотеку wxWidgets и мультиплатформенность.