Одной из самых неприятных вещей в программировании в Python
пока является отсутствие какого-либо «предварительного анализа». Например, в Java
предварительный анализ выполняется до фактической компиляции программы, в которой проверяются такие вещи, как использование имени. Другими словами, если я назвал переменную list_one
в одной области и скажу, что я неправильно ее использую как list_on
в другой области, Java скажет: «Эй, вы не можете этого сделать, я не знаю, что такое list_on
».Есть ли способ предварительного анализа программы Python для именования конфликтов?
Python
, похоже, не делает этого, и это ужасно расстраивает! У меня есть программа, которая занимает около 15 минут, чтобы бежать, и последнее, что я должен был видеть в 14,5 минут в это что-то вроде
NameError: name 'list_on' is not defined
ли их какие-либо инструменты, имеющиеся там могут может выполнять этот вид проверить, действительно ли интерпретатор запускает программу? Если нет, каковы некоторые способы обойти эту проблему?
Пробовал 'pylint'? – geoffspear
Это не «предварительный анализ». Это * компиляция *! Java решает привязки во время компиляции, а python - во время выполнения. В python вы можете создавать переменные во время выполнения, следовательно, * невозможно * надежно * указать, будет ли данная переменная существовать или нет в определенный момент времени в * любой * данной программе. Такие инструменты, как 'pylint' работают * чаще всего * времени, но могут выходить из строя в более сложных ситуациях (особенно в высокодинамичном коде). По пути: вы должны выполнить единичные тесты, то есть тестировать отдельные * части * вашего кода (это выявило бы эти ошибки менее чем за 15 минут). – Bakuriu
Возможный дубликат [Есть ли какие-либо инструменты статического анализа для Python?] (Http://stackoverflow.com/questions/35470/are-there-any-static-analysis-tools-for-python) – Bakuriu