写在以前程序员
每一个人都有本身的代码风格,随着写的行数增长,本身对于代码的审美也会变的不同,这就像是一个逐渐蜕变的过程,每过一段时间回头再去看看本身以前写的代码就会生出一种「这么丑的玩意儿居然是我写的」这种感慨。编程
以前不管是写 C 或者是 C++ 的时候,对于代码风格的好坏观感彻底是凭着本身的主观意识,也没有什么官方标准说这样那样就是好看的。等学了 Python 之后,神奇的发现 Python 官方居然给出了一种编码规范 PEP 8,固然这个只是个标准而已,并无强制要求你们都要去遵照,但又好像大多数人都使用了 PEP 8 编码风格,使它已经成为了事实上的代码风格标准。编辑器
PEP 8 编码规范工具
Python 代码从第一眼看上去,给人的感受就是简洁优美,可读性强,也就是咱们平常所说的「高颜值」。一方面是由于 Python 自身的优秀设计,好比统一的锁进,没有多余的符号从而让代码变的更加简洁;另外一方面就是由于它有着一套较为统一的编码风格,固然它自己只是编码风格方面的建议而不是强制,相应的在编写 Python 代码的编辑器自动提供 PFP 8 检查,当你编写的代码违反了 PEP 8 规范的时候,会给出警告信息和修正的建议。与此同时,还有专门的检查工具对 Python 的代码风格进行检查。学习
由上,仍是建议在编写 Python 代码的时候都遵循 PEP 8 编码规范,毕竟你之后不多是只一我的写代码,将来不管是在公司或者某些开源项目中,做为其中的一份子,确定仍是要在风格上向大众看齐的。开发工具
PEP 8 编码规范详细的给出了 Python 编码的指导,包括什么对齐啦,包的导入顺序啦,空格和注释啦还有命名习惯等方方面面,而且还有详细的事例。编码
下面我以「包」的导入为例,看一下 PEP 8 给出的具体编程指导。在 Python 中, import 应该一次只导入一个模块,不一样的模块应该独立一行:命令行
import pandas import numpy
反面例子:设计
import pandas,numpy
若是想要从一个模块里面导入多个,也能够像下面这样:代码规范
from subprocess import Popen, PIPE
import 语句应该处于源码文件的顶部,位于模块注释和文档字符串以后,全局变量和常量以前。在导入不一样的库的时候,应该按照如下的顺序分组,各个分组之间以空行分隔:
导入标准库模块
导入相关第三方库模块
导入当前应用程序/库模块
具体事例以下所示:
import os import time import psutil from test import u_test,my_test
Python 中还支持相对导入和绝对导入,在这里仍是强推绝对导入。由于绝对导入的可读性更好一些,也不容易出错,即便出错了也会给出更加详细的错误信息。具体以下所示:
from sub_package import tools from sub_package.tools import msg
固然除了上述之外还有更多对于包的规范的描述,PEP 8 的编码风格指导比较长,而且写的很是详细,因此我就不在这一一介绍了,详细的能够参考 Python 官网上的资料。
pycodestyle 检查代码规范
我在上面说过 PEP 8 只是官方给出的 Python 编码规范,并无强制要求你们都遵照,可是又因为你们都在用,因此它也就变成了事实上的 Python 代码风格标准,既然都是标准了,那么就应该有工具来检查这个标准,这样能够帮助 Python 小白规范本身的代码,也能够帮助你们在开源或者工做中造成统一的代码风格。
为了达成上述的目的,官方提供了同名的命令行工具来检查 Python 代码是否违反了 PEP 8 规范,而且对违反规范的地方给出了相应的提示信息。
pip install pep8
规范的名字是 PEP 8 ,这个检查代码风格的命令行工具叫 pep8,这个很容易引发你们的困惑,所以 Python 之父建议将 pep8 从新命名为 pycodestyle,下面咱们来看一下 pycodestyle 的用法。
首先经过 pip 安装一下:
pip install pycodestyle
对一个或者多个文件运行 pycodestyle,打印检查报告:
经过 --show-source 显示不符合规范的源码,以便程序员进行修改,具体以下所示:
autopep8 格式化代码
autopep8 可以将 Python 代码自动格式化为 PEP 8 风格,它使用 pycodestyle 工具来决定代码中的哪部分须要被格式化,这可以修复大部分 pycodestyle 工具中报告的排版问题。autopep8 自己也是一个用 Python 写的工具,因此咱们仍是能够用 pip 直接安装:
pip install autopep8
它的使用方式也很简单,具体以下所示:
autopep8 --in-place test_search.py
上述代码若是不带 --in-place 的话,会将 autopep8 格式化之后的代码直接输出到控制台。咱们能够用这种方式检查 autopep8 的修改,使用 --in-place 则会直接将结果保存到源文件中。在这我继续用上面的例子中用到的 py 文件,具体以下所示:
上面的例子中,autopep8 顺利的修复了全部的问题,可是若是你这个时候查看源文件的话,你会发现源文件的内容仍是和原来同样,并无被修改。这个时候咱们就要用到 --in-place,加上这个选项将不会有任何输出, autopep8 会直接修改源文件。
autopep8 --in-place test_search.py
推荐一下个人Python的学习裙【 784758214 】,不管你是大牛仍是小白,是想转行仍是想入行均可以来了解一块儿进步一块儿学习!裙内有开发工具,不少干货和技术资料分享!但愿新手少走弯路
不要太过急功近利, 慢慢玩, 精进.
若是你觉着编程有趣, 成长也就再也不痛苦, 祝学习愉快.