Подтвердить что ты не робот

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

В моем коде на следующей неделе я обнаружил следующую ошибку:

import datetime

d = datetime.date(2010,9,24)
if d.isoweekday == 5:
    pass

Да, это должно быть d.isoweekday() вместо этого.

Я знаю, если бы у меня был тестовый пример, я бы спасся. Сравнение функции с 5 не очень полезно. О, я не обвиняю Python в этом.

Мой вопрос: Есть ли инструменты, которые могут определять ошибки, подобные этому?

4b9b3361

Ответ 1

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

Как сказал dekomote, это синтаксически справедливо. Python не статически типизирован, поэтому это невозможно поймать как ошибку. В лучшем случае это может быть предупреждение.

EDIT: Python строго типизирован, только тип проверяется во время выполнения.

Ответ 2

Откажитесь от pylint, он может это получить. Он находит много ошибок.

Ответ 3

Ну, это не ошибка в python как таковая, потому что в Python функции вызываемые объекты. Вы можете сделать любой объект вызываемым, выполнив __call__. Так что d.isoweekday == 5 - действительный оператор. Это будет False.

Что касается других ошибок, я предлагаю проверить pyflakes - http://divmod.org/trac/wiki/DivmodPyflakes