【问题标题】:python code convention using pylintpython代码约定使用pylint
【发布时间】:2010-10-17 02:33:27
【问题描述】:

我正在尝试使用 pylint 检查我的源代码的约定。不知何故,一些变量名与常量的正则表达式 (const-rgx) 匹配,而不是变量名正则表达式 (variable-rgx)。如何将变量名与variable-rgx匹配?或者我应该用我的variable-rgx 东西扩展const-rgx

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

【问题讨论】:

    标签: python conventions pylint


    【解决方案1】:

    我只是禁用了该警告,因为我不遵循这些命名约定。

    为此,请将此行添加到模块的顶部:

    # pylint: disable-msg=C0103
    

    如果您想全局禁用它,请将其添加到 pylint 命令中:

    python lint.py --disable-msg=C0103 ...
    

    【讨论】:

      【解决方案2】:
      
      (should match (([A-Z_][A-Z1-9_]*)|(__.*__))$)
      

      就像你说的那样,const-rgx 只匹配大写名称,或双下划线包围的名称。

      变量-rgx是

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

      如果您的变量被称为“设置”,它确实应该与变量-rgx 匹配

      我只能想到两个原因.. 要么设置是常量,要么是 PyLint 中的错误。

      【讨论】:

        【解决方案3】:

        不知何故,一些变量名与常量的正则表达式 (const-rgx) 匹配,而不是变量名正则表达式 (variable-rgx)。

        这些变量是在模块级别声明的吗?也许这就是为什么它们被视为常量的原因(至少根据 PEP-8,它们应该是这样声明的)。

        【讨论】:

        • +1 用于回答真正的问题,即关于正在使用哪个正则表达式,而不是实际的正则表达式。
        • 它们确实是在模块级别声明的!
        • 最烦人的警告是在 'if name == 'main'' 块中弹出此检查,但它是正确的,因为那里的所有变量仍然在模块级别。解决这个问题的最简单方法是只调用一个单独的 main(...) 函数
        猜你喜欢
        • 2018-05-18
        • 1970-01-01
        • 2021-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 2020-03-13
        • 1970-01-01
        相关资源
        最近更新 更多