pylint的表示输出无效变量名(Pylint showing invalid variable n

2019-07-29 16:03发布

我做了一个简单的Python脚本在网站上发布的数据。

#Imports

url_to_short = sys.argv[1]

post_url = 'https://www.googleapis.com/urlshortener/v1/url'
headers = {'Content-Type': 'application/json'}

data = {'longUrl': url_to_short}
post_data = json.dumps(data)

req = urllib2.Request(post_url, post_data, headers)
resp = urllib2.urlopen(req)

if resp.getcode() == 200:  
    content = json.loads(resp.read())

#Other stuff

现在,我想可以让我检查脚本编码规范pylint工具。

pylint输出结果如下:

************* Module post
C:  1,0: Missing docstring
C:  6,0: Invalid name "url_to_short" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C:  8,0: Invalid name "post_url" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C:  9,0: Invalid name "headers" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)

# Other stuff

现在,我的问题是,为什么pylint是显示我的变量名称为Invalid name 。 被命名变量这样一个错误的编码约定。

我完全pylint的输出 。

Answer 1:

当你的代码是不是在一个类中包含或函数它期待这些变量是常量 ,因此他们应该是大写的。

您可以阅读PEP8进一步的信息。



Answer 2:

编辑:正如其他人所说,pylint的预计全局变量应该是大写。 如果真的警告打扰你,你可以通过在包装的小片段这样绕过他们main() -函数,然后使用if __name__ == "__main__" -convention。 或者,如果你不在乎,你可以修改正则表达式是pylint的使用来验证变量名。

从开发商 pylint的的。

在这种情况下pylint的告诉我,这些变量似乎是常量,应该全部大写。 这条规则其实是一个命名约定具体到Logilab谁创造pylint的乡亲。 这是他们选择来命名这些变量的方式。 你也可以创建自己的内部命名约定但在本教程的目的,我们要坚持PEP-8标准。 在这种情况下,我声明的变量应遵循所有小写的约定。 相应的规则是这样的: “应该匹配[A-Z _] [A-Z0-9 _] {2,30} $”。 注意小写字母在正则表达式(AZ与AZ)

您可以通过运行测试: pylint --const-rgx='[a-z_][a-z0-9_]{2,30}$' x.py



Answer 3:

这是因为url_to_short在全局命名空间中声明,以及pylint的要求全局变量(如常量)被命名为ALL_UPPERCASE
因此,它会检查你的变量名称是否使用全局正则表达式,这是相匹配: (([A-Z_][A-Z0-9_]*)|(__.*__))$注意AZ的范围)。 因此, Invalid name错误。



文章来源: Pylint showing invalid variable name in output
标签: python pylint