Как перестать переписывать функции Python при кодировании? - PullRequest
6 голосов
/ 02 марта 2011

Источником постоянной головной боли при отслеживании ошибок в моем коде Python являются, по-видимому, безобидные фрагменты, подобные этому:

 list = ['a', 'b', 'c', 'c']
 list(set(list))

Это не удается, поскольку я переписал функцию list () списком переменных.

Придуманный пример, очевидно, но суть в том, что Python позволяет мне перезаписывать встроенные функции переменными.Я понимаю, что это важная особенность Python, но мне бы очень хотелось, чтобы интерпретатор предупреждал меня, когда я делаю это в своем коде, поскольку я обычно не хочу этого делать.

Может кто-нибудь предложить решение(кроме того, чтобы быть более осторожным) - как я продолжаю спотыкаться об этой проблеме?

Ответы [ 5 ]

9 голосов
/ 02 марта 2011

Вы должны использовать Pylint . Если вы используете Eclipse + PyDev, вы можете настроить его на автоматический запуск в среде IDE и выделить эту проблему (и многие другие).

3 голосов
/ 02 марта 2011

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

3 голосов
/ 02 марта 2011

Такие инструменты, как PyChecker могут быть полезны для вас. См. Также это ТАКОЕ обсуждение.

2 голосов
/ 02 марта 2011

Случайное использование зарезервированных имен является общей проблемой;Основное средство - использовать «хорошие» имена для ваших собственных объектов (в широком смысле).«Хорошие» здесь означают имена, которые сообщают вам соответствующие факты об именованном объекте в зависимости от контекста решаемой проблемы.

Для игрушечных задач это может выглядеть просто как большие усилия, но почему бы не обучить хорошему именованиюдаже когда вы просто пишете код для изучения (особенностей) языка?Так что используйте вашу версию

list_with_duplicates = [ ... ]
0 голосов
/ 02 марта 2011

pylint найдет эту ошибку (среди многих других).

...