是否有 Python (3) 变量名称 lint,例如 'len'(内置 functions/reserved 词等)

Is there a Python (3) lint for variable names such as 'len' (built-in functions/reserved words etc)

我被这个 one 吓到了(在方法调用的参数中使用 len),然后定义一个列表,并对其执行 len,得到:

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

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

是否有用于 VS Code IDE 的 Python3 lint,您可以将其配置为报告未保留的变量 words/built-in 函数?或者一般来说 masking/overwriting。 我没想到会有这种行为。

经过反思,我知道 Python 的一个特性是您可以将函数作为参数传递,因此 lenlen() 具有双重语法。但这确实让我感到惊讶!

Lint 似乎报告未使用的变量之类的东西。

似乎不​​一致,它也没有提供开箱即用的名称掩码报告。

如果可行,有人可以建议如何在 VS Code 中进行设置吗?

环境:

您可以使用 Pylint 为您检查一下。

它有一个专门的警告代码,W0622,用于“重新定义内置”(参见 list of all error codes

在Visual Studio代码中设置,可以参考官方指导:Linting Python in VS Code

继@Samuel Dion-Girardeau

之后
  1. VS Code 似乎没有直接使用 these codes。 相反,它使用更具描述性的键 here 定义 W0622redefined-builtin 在这种情况下。
  2. 在我的 VS Code 设置中(文件>首选项>设置),我看到:
    2.1 python.linting.pylintUseMinimalCheckers": true
    2.2 "python.linting.pylintArgs": []

2.1 等同于此 See here

   --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

在那same place

If you specify a value in pylintArgs or use a Pylint configuration file then pylintUseMinimalCheckers is implicitly set to false.

  1. 因此我需要追加:
    3.1 redefined-builtin"python.linting.pylintArgs": []
    --enable部分 所以我们最终得到:
    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"]

(我从 DEFAULT USER SETTINGS 复制并粘贴到 USER_SETTINGS)。

然后在那里应用更改,确保在 key/value 对之间添加一个逗号。


脚注: 我最近也在亚马逊实例上进行了设置。

我忘了你也需要 运行 pip install pylint 参见