Есть ли Python (3) lint для имен переменных, таких как 'len' (встроенные функции / зарезервированные слова и т. Д.) - PullRequest
0 голосов
/ 30 мая 2018

Меня ужалил этот один (используя len в качестве аргумента при вызове метода), затем определив список и выполнив с ним len, получив:

def fun(len):
  a = []
  ...
  len(a)

>>>TypeError: 'int' object is not callable

Есть ли в Python3 пух для VS Code IDE, который вы можете настроить для отчета о переменных, не являющихся зарезервированными словами / встроенными функциями?Или маскировка / перезапись вообще.Я не ожидал такого поведения.

Если подумать, я знаю, что это особенность Python, позволяющая передавать функции в качестве аргументов, отсюда и двойной синтаксис len и len().Но это определенно застало меня врасплох!

Кажется, что Линт сообщает о таких вещах, как неиспользуемые переменные

Кажется непоследовательным, он также не предоставляет отчет о маске имени из коробки.

Если это возможно, кто-то может посоветовать, как настроить его в VS Code?

Среда :

  • VS Код: версия 1.23.1
  • Python 3.6.5
  • Python Extension 2018.4.0
  • Microsoft Windows Server 2012 RC2.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Исходя из ответа @Samuel Dion-Girardeau

  1. Кажется, VS Code не использует эти коды напрямую.Скорее он определяет W0622 с более описательным ключом здесь .redefined-builtin в этом случае.
  2. В моих настройках кода VS (Файл> Настройки> Настройки) я вижу:2,1 python.linting.pylintUseMinimalCheckers": true2.2 "python.linting.pylintArgs": []

2.1 соответствует этому Смотрите здесь

   --disable=all --enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode

В этом том же месте

Если вы указываете значение в pylintArgs или используете файл конфигурации Pylint, тогда pylintUseMinimalCheckers неявно устанавливается в false.

Итак, мне нужно добавить:3,1 redefined-builtin в --enable часть "python.linting.pylintArgs": []Итак, мы заканчиваем с:3,2 python.linting.pylintUseMinimalCheckers": false(Это выводит, что эта часть не требуется ...)3.3 "python.linting.pylintArgs": [ "--disable=all", "--enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode,redefined-builtin"]

(я копирую и вставляю из НАСТРОЙКИ ПОЛЬЗОВАТЕЛЯ ПО УМОЛЧАНИЮ в USER_SETTINGS).

Затем применяем изменения, добавляя запятую между парами ключ / значение.


Сноска. Недавно я тоже настраивал это на экземпляре Amazon.

Я забыл, что вам тоже нужно запустить pip install pylint См. здесь .

0 голосов
/ 30 мая 2018

Вы можете использовать Pylint , чтобы проверить это для вас.

У него есть специальный код предупреждения W0622 для "Переопределения встроенного" (см. списоквсе коды ошибок )

Чтобы настроить его в Visual Studio Code, вы можете следовать официальному руководству: Linting Python в VS Code

...