скорость и чистота кодирования Python - PullRequest
0 голосов
/ 08 февраля 2009

Python довольно чистый, и я могу быстро кодировать аккуратные приложения. Но я замечаю, что где-то есть небольшая ошибка, и я не нахожу ее при компиляции, но во время выполнения Затем мне нужно изменить и снова запустить скрипт. Есть ли способ заставить его сломаться и позволить мне изменить и запустить?

Также мне не нравится, что в python нет перечислений. Если бы я должен был написать код, который требует много перечислений и типов, я должен был бы делать это на C ++? Такое чувство, что я могу сделать это быстрее в C ++.

Ответы [ 4 ]

9 голосов
/ 08 февраля 2009

«Я не нахожу ошибку при компиляции, но во время выполнения»

Правильно. Верно для всех не скомпилированных интерпретируемых языков.

«Мне нужно изменить и снова запустить скрипт»

Также правильно. Верно для всех не скомпилированных интерпретируемых языков.

«Есть ли способ сломать его и позволить мне изменить и запустить?»

Что?

Если это ошибка во время выполнения, скрипт ломается, вы исправляете его и запускаете снова.

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

Или, может быть, вы имеете в виду что-то еще.

"... код, который требует много перечислений"

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

Вы должны будете предоставить код, который нуждается в большом количестве перечислений в качестве конкретного примера. Возможно, в другом вопросе, который звучит так: «Что является заменой Pythonic для всех этих перечислений?»

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

3 голосов
/ 08 февраля 2009

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

Тем не менее я привязываю клавишу F7 для запуска модульных тестов в текущем каталоге и подкаталогах и клавишу F6 для запуска pylint в текущем файле. Частое их использование позволяет довольно быстро обнаруживать ошибки.

3 голосов
/ 08 февраля 2009

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

1) {Pyflakes, pychecker, pylint} проведут статический анализ вашего кода. Это решает проблему синтаксиса в основном.

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

Обратите внимание, что с 1 & 2 на месте вы немного лучше, чем если бы на вашей стороне был только статический компилятор. Тем не менее, это не создаст доказательств правильности.

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

2 голосов
/ 08 февраля 2009

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

Существует множество способов реализации перечислений, быстрый поиск в Google по запросу «перечисления python» дает все, что вам может понадобиться. Однако вам следует выяснить, действительно ли они вам нужны, и есть ли лучший, более «питонический» способ сделать то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...