Python标准库代码低Pylint评分的原因
有个朋友跟我提到Pylint,出于好奇,我就用它检查了一些标准库的模块。结果让我很惊讶,评分居然很低。以下是我运行的结果:
os.py
Your code has been rated at 3.55/10
random.py
Your code has been rated at 4.74/10
我又对更多的模块进行了检查,发现评分大约在6到7之间。
我在想,这是什么原因呢?是Pylint有问题,还是评分的标准还有我不知道的其他因素?我特别想问这个问题,因为我刚开始学Python,之前是希望Pylint能帮我提升编码风格的 :)
2 个回答
8
Pylint 是在标准库之后很久才写的。而标准库并没有严格遵循命名规则,比如说PEP008这个规范是比较新的,针对Python的。想要在 Pylint 中获得“好”的评分,有几个关键因素:
确保你的代码风格符合 Pylint 的期望(或者调整 Pylint 以适应你的风格/规范)。这包括函数、变量、类和方法的命名,以及在不同地方的空格等。
尽量以静态的方式编写 Python 代码,避免使用动态的技巧。
写文档字符串(docstrings)。
显然,标准库并不是为了优化 Pylint 对模块的评分而编写的。
使用 Pylint 并不一定会改善你的“编码风格”。不过,在很多情况下,它会让你的代码更容易理解,有时可能会牺牲一些“Python 风格”。
15
Pylint的默认设置比较严格,常常会对一些不该抱怨的事情发出警告。例如,如果你使用了foo(**kwargs)
,它会提示你在使用“魔法”功能。有时候感觉Pylint是在用Java程序员的视角来看待Python。
你需要查看具体的警告信息,然后决定自己是否同意这些意见。
还有其他问题,比如它不能处理特定平台的条件判断。在os.py文件中,它会抱怨:
F:119: Unable to import 'riscos'