python coding style_python coding style guide 的高速落地实践

python coding style guide 的高速落地实践

机器和人各有所长,如coding style检查这样的可自己主动化的工作理应交给机器去完毕,故发此文帮助你在几分钟内实现coding style的自己主动检查。

1.有哪些著名的Python Coding Style Guide

PEP8

发明Python语言丰碑人物Guido van Rossum的亲自写的Coding Style, 知名度5颗星,可操作性5颗星。

Google Python Coding Style Guide

Google内部广泛使用Python作为开发语言,此Coding Style 在坊间流传非常广。知名度5颗星,可操作性5颗星。

值得一提的是Guido也以前在Google工作过一段时间。

2.Flake8 - Coding Style检查自己主动化的利器

你可能听说过pep8。这是一个依据PEP8规范检查python代码style的自己主动化工具。

flake8是对pep8进行了包装,充分发挥了插件化的优势。添加了如代码复杂度,函数、变量命名习惯,import顺序等检查。

2.1 安装Flake8

安装flake8。同一时候安装一些实用的插件。

pep8-nameing

flake8-import-order

https://github.com/public/flake8-import-order

import 顺序检查。能够有两种风格顺序检查cryptography, google。如google的意思是import顺序是(1)标准库(2)第三方库(3)本地项目库。代码检查时能够通过--import-order-style=google来指定。

flake8-todo

flake8-quotes

详细安装命令例如以下:

$pip install flake8

$pip install pep8-naming

$pip install flake8-import-order

$pip install flake8-todo

$pip install flake8-quotes

检查安装了哪些插件:

$ flake8 --version

# 输出例如以下内容,显示了已安装的插件:

2.5.1 (pep8: 1.5.7, import-order: 0.6.1, naming: 0.3.3, pyflakes: 1.0.0, mccabe: 0.3.1, flake8-todo: 0.4, flake8_quotes: 0.1.1) CPython 2.6.6 on Linux

2.2 用Flake8检查Python Codes

比如例如以下代码:

# test.py

from order import place_order

import os, sys

class website_api(object):

def __init__(self):

self.user_name = ''

self.Gender = 'male'

#comment in wrong ident

self.active =False

def login(self, Person):

self.user_name=Person.user_name

not_used_var = 0

return True

def Logout(self):

self.active =False

def place_order(self):

place_order()

def action():

Client_a = website_api()

Client_a.login()

Client_a.place_order()

Client_a.Logout()

运行检查命令:

$ flake8 --first --import-order-style=google test.py

输出结果例如以下,你能够依据错误码来修正代码,如当中的N802的意思是function name不应该包括大写英文字母。

# flake8 output

test.py:2:1: F401 'sys' imported but unused

test.py:2:1: I100 Imports statements are in the wrong order. from os, sys should be before from order

test.py:2:1: I201 Missing newline before sections or imports.

test.py:2:10: E401 multiple imports on one line

test.py:4:7: N801 class names should use CapWords convention

test.py:8:9: E265 block comment should start with '# '

test.py:9:22: E225 missing whitespace around operator

test.py:11:9: N803 argument name should be lowercase

test.py:13:9: F841 local variable 'not_used_var' is assigned to but never used

test.py:16:9: N802 function name should be lowercase

test.py:23:5: N806 variable in function should be lowercase

除此之外。flake8也能够递归得检查某个文件夹中的代码:

$flake8 your_project_dir

flake8经常使用的options有:

–show-source

show source code for each error

–first

show first occurrence of each error

–import-order-style=google

import order style to follow

–count

print total number of errors and warnings to standard error and set exit code to 1 if total is not null

–help

get help

2.3 Flake8 Warning / Error codes 列表

随着新的flake8 plugin的集成,还可能有其它的codes,假设你的项目有特殊的代码检查需求。也可开发自己的plugin。

2.4 Flake8的个性化配置

依据须要,flake8的配置能够是全局的(对全部project有效)。也能够是分project的。这里仅举例说明全局配置方法。分project配置请见flake8 Per Project Configuration。

编辑 ~/.config/flake8

[flake8]

ignore = E201,E202,E302

exclude = .tox,*.egg

max-line-length = 120

以上配置的意思是flake8不检查E201, E202, E302这三个错误,不检查.tox,*.egg文件。同意的最长单行代码长度为120个字符。

2.5 Flake8高级使用方法 - Git Commit Hook

flake8可结合Git实现commit时检查coding style的目的,假设flake8报错,则无法commit。

在python project的根文件夹下运行例如以下命令安装git pre-commit hook。

$flake8 --install-hook

$git config flake8.strict true

References

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值