соглашение о коде Python с использованием pylint

Я пытаюсь использовать pylint, чтобы проверить исходный код на наличие соглашений. Каким-то образом некоторые имена переменных сопоставляются с регулярным выражением для констант (const-rgx) вместо регулярного выражения имени переменной (variable-rgx). Как сопоставить имя переменной с variable-rgx? Или мне следует расширить const-rgx моими variable-rgx вещами?

e.g.
C0103: 31: Invalid name "settings" (should match (([A-Z_][A-Z1-9_]*)|(__.*__))$)


person Jack Ha    schedule 02.04.2009    source источник


Ответы (3)


Каким-то образом некоторые имена переменных сопоставляются с регулярным выражением для констант (const-rgx) вместо регулярного выражения имени переменной (variable-rgx).

Эти переменные объявлены на уровне модуля? Возможно, именно поэтому они рассматриваются как константы (по крайней мере, так они должны быть объявлены согласно PEP-8).

person alex    schedule 02.04.2009
comment
+1 за ответ на реальный вопрос, то есть о том, какое регулярное выражение используется, а не фактическое регулярное выражение. - person DNS; 02.04.2009
comment
Они действительно объявлены на уровне модуля! - person Jack Ha; 02.04.2009
comment
самое раздражающее предупреждение появляется, когда эта проверка выскакивает в блоке ´if name == 'main'´, но это правильно, так как все переменные все еще находятся в блоке модульный уровень. Самый простой способ решить эту проблему - вызвать только отдельную функцию main(...) - person van; 23.12.2009

Я просто отключил это предупреждение, потому что я не следую этим соглашениям об именах.

Для этого добавьте эту строку в верхнюю часть вашего модуля:

# pylint: disable-msg=C0103

Если вы хотите отключить это глобально, добавьте его в команду pylint:

python lint.py --disable-msg=C0103 ...
person Jason Coon    schedule 02.04.2009


(should match (([A-Z_][A-Z1-9_]*)|(__.*__))$)

как вы сказали, это const-rgx, который соответствует только именам в ВЕРХНЕМ РЕГИСТРЕ или именам, окруженным двойным подчеркиванием.

переменные-rgx есть

([a-z_][a-z0-9_]{2,30}$)

если ваша переменная называется «настройки», которые действительно должны соответствовать переменным-rgx

Я могу придумать только две причины для этого: либо настройки являются константами, либо это ошибка в PyLint.

person ShoeLace    schedule 02.04.2009