Что хорошие пути состоят в том, чтобы заставить мой код Python выполнить в первый раз? [закрытый]

53
задан Rog 4 September 2012 в 22:18
поделиться

13 ответов

Если у Вас есть проблемы с синтаксисом, Вы могли бы судить редактора подсветкой синтаксиса. Пока Вы не привыкнете для языка, простые ошибки не будут просто всплывающий в Вас.

самая простая форма отладки должна только вставить некоторые операторы печати. Более усовершенствованное (и расширяемый) способ сделать это должно было бы использовать вход модуль от lib станд.

интерактивный интерпретатор является замечательным инструментом для работы с кодом Python, и , IPython является большим улучшением по сравнению со встроенным REPL (Цикл Печати Оценки Чтения).

, Если Вы на самом деле хотите ступить через свой код, отладчик Python называют pdb, который можно назвать из командной строки или встроить в Ваш код.

, Если бы Вы привыкли к полностью интегрированному IDE, я рекомендовал бы использовать Eclipse с pydev, и PyCharm имеет большое коммерческое предложение, с автоматическим заполнением, быстрым доступом к документам и многочисленными ярлыками, среди многих других интересных функций.

35
ответ дан Aaron Hall 7 November 2019 в 08:25
поделиться

Python-m pdb yourcode.py должен сделать это. Кроме того, можно "импортировать pdb" в коде и использовать pdb.set_trace () для установки точек останова. Отошлите руководство для большего количества информации: http://www.python.org/doc/2.5.2/lib/module-pdb.html

1
ответ дан Sridhar Iyer 7 November 2019 в 08:25
поделиться

Плагин PyDev для затмения является моим предпочтительным инструментом. Это распознает простые ошибки синтаксиса и ошибки добавления отступа и подчеркивает ошибку с красной строкой. Это имеет мощный отладчик и даже имеет плагин под названием PyLint, который предупреждает Вас об опасном коде.

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

Редактирование снова: Я не заметил, что pydev был упомянут в лучшей публикации. Я надеюсь, что принес что-то еще к таблице.

4
ответ дан Nailer 7 November 2019 в 08:25
поделиться

Ошибки Identifing перед выполнением являются доменом статической проверки/анализа. Мне везло с помощью PyChecker для основной статической проверки кода Python.

pycheesecake сайт имеет очень хорошее сводка инструментов тестирования для Python.

4
ответ дан Andrew Beyer 7 November 2019 в 08:25
поделиться

Используя оператор контроля подробно.

5
ответ дан 7 November 2019 в 08:25
поделиться

Я настроил Python для автоматического запуска отладчика, когда существует неперехваченное исключение, с помощью этот прием . Тем путем можно легко исследовать состояние программы без слишком большого количества регистрирующегося кода. (Плюс, для отправки меня уведомление о Рычании.)

, О, и этот путь можно просто создать точку останова в коде путем добавления

if answer == 42:
    1/0 
6
ответ дан Michael Kuhn 7 November 2019 в 08:25
поделиться

Как правило, я просто использую набор операторов печати.

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 консоли также.

7
ответ дан dbr 7 November 2019 в 08:25
поделиться

Протестируйте рано и часто тестируйте.

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

Инвестируют некоторое время в изучение среды тестирования. Если это будет тривиально для Вас для ввода в тестовом сценарии, то Вы более вероятно сделаете это. Если у Вас нет вида тестирования платформы, может быть боль, таким образом, Вы избежите его. Так, установите некоторые хорошие привычки вначале, и у Вас будет меньше проблем в будущем.

7
ответ дан Bryan Oakley 7 November 2019 в 08:25
поделиться

Python обеспечивает отладчик, который позволяет Вам ступать через Ваш код, осматривать переменные и управлять ими. Обратитесь к http://pythonconquerstheuniverse.wordpress.com/category/python-debugger/ , который может взять Вас по шагам...

Также проверяют справочное руководство по библиотеке стандарта Python на pdb http://www.python.org/doc/2.5.2/lib/module-pdb.html

10
ответ дан ChillarAnand 7 November 2019 в 08:25
поделиться

Весь действительно интересный материал легко продемонстрирован в интерактивном интерпретаторе. Я думаю, что это могло бы быть "золотым стандартом" для хорошего дизайна:

можно ли осуществить класс в интерактивном режиме?

, Если можно сделать материал в интерактивном режиме, тогда можно записать unittests и doctests с уверенностью, что это является тестируемым, простым, надежным.

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

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

Вы все еще делаете общий замысел. Но Вы не тратите код записи времени, который может или не может работать. В Python Вы пишете код, который работает. Если Вы не уверены, Вы играете с ним в интерактивном режиме, пока Вы не уверены. Тогда Вы пишете код, который работает.

15
ответ дан S.Lott 7 November 2019 в 08:25
поделиться

Вот некоторые методы для упрощения отладки в Python:

  • используют интерактивную оболочку, например, ipython. Python является динамическим языком, можно исследовать код, как Вы вводите. Оболочка работает во втором окне в моем редакторе в любом случае.

  • вставка копии от оболочки в docstrings код, который иллюстрирует доминирующее использование и угловые случаи функции (класс, модуль). doctest.testmod() помещенный в if __name__=="__main__" раздел позволяет тестировать все docstrings в модуле. doctest может быть легко интегрирован с unittest.

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

  • print() может решить много проблем отладки; вход модуль подходит для долго живущих процессов Python.

  • тесты записи (не обязательно перед Вашим кодом), выполняет их часто (автоматически или с одним нажатием клавиши самое большее); нос обеспечивает расширенное тестовое открытие и рабочие функции unittest.

  • работает pylint иногда.

В этой точке существует немного использования для формального отладчика Python. Winpdb является внешним многоплатформенным отладчиком Python GUI GPL'ed при необходимости в том.

30
ответ дан jfs 7 November 2019 в 08:25
поделиться

Существует очень хороший графический отладчик для Python, который называется Winpdb . Попробуйте это. Встроенный в библиотеку wxWidgets и мультиплатформенность.

1
ответ дан 7 November 2019 в 08:25
поделиться

Eric4 IDE также имеет отличный встроенный отладчик.

0
ответ дан 7 November 2019 в 08:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: