写代码其实是需要规范的,团队中更是如此;不然 Google 也不会发布各种编码规范,耳熟能详的有Google C++ 风格指南,Google Python 风格指南,等等。

这些规范有用吗?有用也没用,除非你脑子好使,一边 coding,一边将规范运用的发紫;否则我们终须还是需要一种工具来做这件事情。好在python 不止一种工具帮我们做这件事。话休絮烦,切正题。

Pylint

使用过,变态到发紫;不知道谁那么无聊,将规则定的那么死,我们 pythoner 能快乐吗?乃们不见 rubyer,Matz 倡导的是什么? Happy Coding 有木有? 所以用过就仍了,因为我不需要这么变态的搞,无爱~ 如果你要安装,也很简单:

<php>easy_install pylint // maybe nedd root</php>

Pep8

顾名思义,来自于 Python 社区著名的 PEP 8。基本上写代码按这个就对了,但是这还不够完美;安装如下:

easy_install pep8 // maybe nedd root

Pyflakes

Python 程序被动检测工具,还真够被动的,据作者说比较快,不够强大,但是还可以~

easy_install pyflakes // maybe nedd root

Flake8

主角登场了,这是我推荐的,但是并不影响其他人喜欢 pylint。其实这哥们是集大成者,是以下三个工具的包装:

PyFlakes

Pep8

Ned Batchelder’s McCabe script

好处不说了,关键是可扩展的,这儿说的很清楚了:https://pypi.python.org/pypi/flake8/2.0。安装如下:

easy_install flake8 // maybe nedd root

如果你跟我一样喜欢 Git 这丫,那么你也是 pyhoner,那么还有福利,将如下的代码写入 .git/hooks/pre-commit:

#!/usr/bin/env python

import sys

from flake8.hooks import git_hook

COMPLEXITY = 12

STRICT = True

代码就不解释了,官方文档写的很清楚:http://flake8.readthedocs.org/en/latest/vcs.html#git-hook。 如果你的 pre-commit 脚本已经有了规则,也没事,在 shell 中调用 python 吧。

如果你也喜欢 vim

作为两大神器之一的 vim,自然要有插件来享受以上工具的:

nvie/vim-flake8

vim-scripts/pylint.vim

看到上面的列举,你应该会知道我在说什么了,没错,用 vundle 安装:

" Flake8 plugin for Vim.

Bundle 'nvie/vim-flake8'

" compiler plugin for python style checking tool.

Bundle 'vim-scripts/pylint.vim'

autocmd FileType python compiler pylint

如果你真的不知道 vundle,真的是时候使用她了:https://github.com/gmarik/vundle。如果你嫌这一切都麻烦,直接用我的 vimrc 吧,在这里:

git clone https://github.com/icocoa/icocoa-vimrc.git --recursive vimrc // icocoa is my another account in GitHub

http://www.qytang.com/cn/list/28/446.htm
http://www.qytang.com/cn/list/28/445.htm
http://www.qytang.com/cn/list/28/444.htm
http://www.qytang.com/cn/list/28/442.htm
http://www.qytang.com/cn/list/28/440.htm
http://www.qytang.com/cn/list/28/437.htm
http://www.qytang.com/cn/list/28/435.htm
http://www.qytang.com/cn/list/28/434.htm
http://www.qytang.com/cn/list/28/433.htm
http://www.qytang.com/cn/list/28/431.htm
http://www.qytang.com/cn/list/28/328.htm
http://www.qytang.com/cn/list/28/326.htm
http://www.qytang.com/cn/list/28/429.htm

http://www.qytang.com/
http://www.qytang.com/cn/list/29/

Python代码规范利器Flake8的更多相关文章

  1. flake8(代码规范利器)

    flake8(代码规范利器) 概述 flake8是下面三个工具的封装: 1)PyFlakes 2)Pep8 3)NedBatchelder’s McCabe script Flake8的下载地址:ht ...

  2. 老李分享:pep8 python代码规范

    老李分享:pep8 python代码规范 什么是PEPPEP是 Python Enhancement Proposal 的缩写,翻译过来就是 Python增强建议书 . PEP8 译者:本文基于 20 ...

  3. python代码规范与标准库参考

    python代码规范与标准库参考 python代码规范参考文献: http://www.runoob.com/w3cnote/google-python-styleguide.html https:/ ...

  4. Python代码规范问题及解决

    Python代码规范问题及解决 为了养成使用Python编程好习惯,尽量保证自己写的代码符合PEP8代码规范,下面是过程中报出的警告及解决方法,英文有些翻译不太准确见谅,会不断更新: PEP 8 只是 ...

  5. Python代码规范之---代码不规范,亲人两行泪

    任何语言的程序员,编写出符合规范的代码,是开始程序生涯的第一步! 关于代码规范 Python 官方提供有一系列 PEP(Python Enhancement Proposals) 文档 其中第 8 篇 ...

  6. Python代码规范(PEP8)问题及解决

    转载:https://blog.csdn.net/Jason_Lewis/article/details/75386598 最近刚刚接触Python,为了养成好习惯,尽量保证自己写的代码符合PEP8代 ...

  7. Python代码规范

    一:背景 用于规范化ocp python开发,对于使用python开发的程序使用统一的风格,便于代码的维护 二:python风格规范 分号:不要在行尾加分号,也不要用分号将两条命令放在同一行 括号:宁 ...

  8. python代码规范整理

    规范参考源: 1.pep8(python代码样式规范):中文文档      https://blog.csdn.net/ratsniper/article/details/78954852 2.pep ...

  9. python代码规范 自动优化工具Black

    自动优化工具Black 在众多代码格式化工具中,Black算是比较新的一个,它***的特点是可配置项比较少,个人认为这对于新手来说是件好事,因为我们不必过多考虑如何设置Black,让 Black 自己 ...

随机推荐

  1. c++ 异常处理(3)

    <C++编码规范与指导>一文,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了.没想到时隔几年以后才有机会把这个尾巴补完 :-). 还是那句开场白:“在恰当的场合使用恰当的特性” ...

  2. CAsyncSocket只传输了一部分数据(UDP),后面是乱码

    void CCAsyncSocketDlg::OnBnClickedBtnSend() { UpdateData(TRUE); TCHAR ipstr[INET_ADDRSTRLEN]; DWORD ...

  3. Unix网络编程 3.9 readline函数

    其实看APUE时就想试着写些简单的stdio函数了,但是一直没实践,看到这里时发现书上写得不完整,便敲代码试了下. 第1个readline速度非常慢原因在于每次读取字符都执行了系统调用read(),而 ...

  4. 在Windows下搭建基于nginx的视频直播和点播系统

    http://my.oschina.net/gaga/blog/478480 一.软件准备 由于nginx原生是为linux服务的,因此官方并没有编译好的windows版本可以下载,要在windows ...

  5. mysql分区表之二:MySQL的表的四种分区类型介绍

    一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...

  6. 阻塞队列之二:LinkedTransferQueue

    一.LinkedTransferQueue简介 TransferQueue是一个继承了BlockingQueue的接口,并且增加若干新的方法.LinkedTransferQueue是TransferQ ...

  7. hadoop map端的超时参数

    目前集群上某台机器卡住导致出现大量的Map端任务FAIL,当定位到具体的机器上时,无法ssh或进去后terminal中无响应,退出的相关信息如下: [hadoop@xxx ~]$ Received d ...

  8. oracle startup mount nomount 区别

    看oracle入门书,其中一句话说,使用startup nomount 命令启动例程,不可以和mount open 和exclusive一起使用,这个命令适用于建立数据库或是维护数据库时使用. 于是查 ...

  9. eyoucms 前台 getshell 复现

    漏洞地址:http://www.sch01ar.com/index.php/api/Uploadify/preview 这样子说明存在漏洞 对 <?php phpinfo(); 进行 base6 ...

  10. 局部加权线性回归(Locally weighted linear regression)

    首先我们来看一个线性回归的问题,在下面的例子中,我们选取不同维度的特征来对我们的数据进行拟合. 对于上面三个图像做如下解释: 选取一个特征,来拟合数据,可以看出来拟合情况并不是很好,有些数据误差还是比 ...