# 0X0B Pylint
## 简介
代码风格是一个很重要也很容易被忽视的东西。很多人觉得代码能跑就行了,实则不然。代码还应该可读,易读。这样才能方面修复漏洞,增加功能,交流源码或者是交接工作。
Pylint就是一个帮助你保持代码风格(默认支持的是PEP 8)的工具 。当你书写的代码不符合风格规范的时候Pylint就会以提示和警告的形式为你指出。
## 软件的获取
Pylint也是一款开源软件。你可以在Github上找到源码。
如果仅仅是使用的话,推荐用pip安装(需要管理员权限):
```shell
pip install pylint
```
## 基本使用
你可以使用命令行工具版的pylint来检查代码。但是一般来说我们都把pylint连接到所用的文本编辑器或者集成开发环境。这样在用编辑器编辑Python代码的时候,警告和提示栏就会增加Pylint的警告信息。
以VSCode为例。你需要安装VSCode的Python插件。然后按照说明页的说明,安装Pylint并设置VSCode。
## 注意事项
一些包中提供的动态生成的语法糖可能会被Pylint识别为语法错误。(因为在代码执行前并不能知道一个对象有这些动态加入的属性,而Pylint经常是在代码运行前工作。)
比如sklearn中自带的鸢尾花数据集:
```python
iris=dataset.load_iris()
```
这里的`iris`是一个命名元组,有`data`和`target`作为成员。普通语法使用`data`的方法是:
```python
iris['data']
```
语法糖的写法是:
```python
iris.data
```
但是Pylint不能识别后边这种动态的语法糖。(后边这种语法糖就是在运行时把元组成员变成了类似对象和属性的关系。但是从代码静态分析并不能得出`iris`这个对象有一个名为`data`的属性。`data`这个“属性”是在运行时给`iris`注册的(元组这个类本身没有`data`这个属性)。而且换一个元组就不一定有一个名为`data`的属性了。)
再举一个例子。用matplotlib绘图时经常写:
```python
plt.cm.Paired
```
这也是一个语法糖,而且Pylint无法识别。完整写出来应该是:
```python
plt.cm.get_cmap('Paired')
```
你可以考虑不适用这些语法糖,规规矩矩地写符合Pylint要求的代码。或者在设置中关闭这一类错误提示求得清净。
另外,要分别哪些写法是语法糖,那些不是,可以上所用模块对应的官网查询文档。
## 资料
[Pylint官网](https://www.pylint.org/)