代码之家  ›  专栏  ›  技术社区  ›  JGFMK

变量名是否有python(3)lint,比如'len'(内置函数/保留字等)

  •  1
  • JGFMK  · 技术社区  · 7 年前

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

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

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

    VS代码IDE是否有python3 lint,您可以将其配置为报告不是保留字/内置函数的变量?或一般的掩蔽/覆盖。 我没想到会有这种行为。

    经过深思熟虑,我知道python的一个特性是可以将函数作为参数传递,因此 伦恩 len() . 但这的确让我大吃一惊!

    lint似乎报告了一些未使用的变量。

    它似乎不一致,它也不提供现成的名称掩码报告。

    如果这是可行的,有人可以建议如何设置它在vs代码?

    环境 :

    • VS代码:版本1.23.1
    • 蟒蛇3.6.5
    • Python扩展2018.4.0
    • Microsoft Windows Server 2012 RC2。
    2 回复  |  直到 7 年前
        1
  •  2
  •   JGFMK    7 年前

    以下是“塞缪尔·迪翁·吉拉多”的回答

    1. 似乎vs代码不使用 these codes 直接的。 相反,它定义了 W0622 更具描述性的关键字 here . redefined-builtin 在这种情况下。
    2. 在“我的VS代码设置”(文件>“首选项”>“设置”)中,我看到:
      二点一 python.linting.pylintUseMinimalCheckers": true
      二点二 "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

    如果在PylIntargs中指定值或使用PylInt配置 文件,则PylIntuSeminimalCheckers隐式设置为false。

    1. 因此,我需要附加:
      三点一 重新定义的内置 --enable 部分 “python.linting.pylintargs”:[]
      所以我们最终得到:
      三点二 python.linting.pylintUseMinimalCheckers": false
      (推断此部分不是必需的…)
      三点三 "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"]

    (我从默认用户设置复制并粘贴到用户设置中)。

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


    脚注: 我最近也在一个amazon实例上设置了这个。

    我忘了你还得跑 pip install pylint 太 见 here .

        2
  •  1
  •   Samuel Dion-Girardeau    7 年前

    你可以用 Pylint 帮你检查一下。

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

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