是否有变量名称的Python(3)lint,例如'len'(内置函数/保留字等)

时间:2018-05-30 16:40:32

标签: python-3.x visual-studio-code lint

我受到这个one的攻击(在方法调用的参数中使用len),然后定义一个列表,并在其上执行len,产生:

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

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

是否有针对VS Code IDE的Python3 lint,您可以配置为报告变量不是保留字/内置函数?或者一般掩盖/覆盖。 我没想到那种行为。

反思我知道Python的一个特性是你可以将函数作为参数传递,因此lenlen()的双重语法。但它确实让我感到意外!

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

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

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

环境

  • VS代码:版本1.23.1
  • Python 3.6.5
  • Python Extension 2018.4.0
  • Microsoft Windows Server 2012 RC2。

2 个答案:

答案 0 :(得分:2)

继@Samuel Dion-Girardeau的回答之后

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

      

    如果在pylintArgs中指定值或使用Pylint配置   文件然后pylintUseMinimalCheckers隐式设置为false。

    1. 因此我需要追加:
      3.1 redefined-builtin--enable的{​​{1}}部分 所以我们最终得到:
      3.2 "python.linting.pylintArgs": []
       (它推断这部分不是必需的......)
      3.3 python.linting.pylintUseMinimalCheckers": false
    2. (我将DEFAULT USER SETTINGS复制并粘贴到USER_SETTINGS中)。

      然后在那里应用更改,确保在键/值对之间添加逗号。

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

      我忘了你也需要运行"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"] 请参阅here

答案 1 :(得分:1)

您可以使用Pylint为您核对。

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

要在Visual Studio Code中进行设置,您可以按照官方指南进行操作:Linting Python in VS Code