最近和Pycharm的PEP-8较上劲了,没必要,真没必要。在我看开以后,重新记录一下这个过程中有价值的内容。
PEP 8简介
PEP-8 是Python代码样式指南,初版的作者是Guido van Rossum,核心旨在提高代码的可读性,并使其在各种Python代码中保持一致。换言之,就算不按照它xjb写,代码也是能Run起来的。官方自己也建议不要为了遵守PEP 8而破坏向后兼容性,通俗的说话就是代码风格要保持一致,一致的PEP 8和一致的shit 8都行。下面举些PEP 8样式的简单例子:
缩进
python对缩进的要求非常高,每个缩进级别使用4个空格。
延续线应垂直对齐包裹元素,使用Python的隐含线连接括号,括号和括号内。
正确的示例
# Correct
# 括号内参数的上下对齐
foo = long_function_name(var_one, var_two,
var_three, var_four)
# 参数换行后用第二层级(8个space)
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)
# 悬挂式对齐
foo = long_function_name(
var_one, var_two,
var_three, var_four)
错误的示例
# Wrong
# 第一行的参数不会被调用,悬挂对齐必须从第一个参数开始
foo = long_function_name(var_one, var_two,
var_three, var_four)
# print的缩进是有问题的
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)
可选择的情况
# Casually
# 悬挂缩进可以缩进到4个空格以外的位置。
foo = long_function_name(
var_one,var_two,
var_three,var_four)
Imports
Import通常应放在单独的行上,比如:
# Correct
import os
import sys
# Wrong
import sys, os
但是我感觉我自己整天写成下面那样好吧……
此外,PEP 8要求Import总是放在文件的顶部,紧随任何模块注释和文档字符串之后,以及模块全局变量和常量之前。且应按以下顺序分组:
1、标准库导入
2、相关第三方进口
3、本地应用程序/特定于库的导入
对此也有一个示例:
# Correct
import mypkg.sibling
from mypkg import sibling
from mypkg.sibling import example
按照一定顺序是好的,但是也不要生搬硬套。
空格建议
空格建议五花八门,大抵常见的有如下几条:
1、避免在任何地方拖尾空格,因为看不见。
2、在两侧用单个空格将二进制运算符包围起来。
3、如果使用优先级不同的运算符,考虑在优先级最低的运算符周围添加空格。
4、用于指示关键字参数或默认参数值时,不能在=号前后使用空格。
5、但当要将参数注释与默认值组合时,又要在=号周围使用空格。
正确的示例
# Correct
i = i + 1
submitted += 1
x = x*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)
def munge(input: AnyStr):
def munge() -> PosInt:
def complex(real, imag=0.0):
return magic(r=real, i=imag)
错误的示例
# Wrong
i=i+1
submitted +=1
x = x * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)
def munge(input:AnyStr):
def munge()->PosInt:
def complex(real, imag = 0.0):
return magic(r = real, i = imag)
还有一些其它的建议,比如谨慎使用内联注释,API公共部分可见的名称命名应遵循反映用法而不是实现,制表符应仅用于与已经用制表符缩进的代码保持一致,等等。
错误代码
python有PEP 8相关的包,如果真想安装的话:
$ pip install pep8-naming
$ pip install --upgrade pep8-naming
然后错误代码分Naming和Coding两类,下面是Naming的错误信息:

以及Coding的错误警告信息:

可以放大看看……其中带(*)标记的在默认配置中是被忽略的,E121,E123,E126,E133, E226,E241,E242,E704,W503,W504和W505是不被强制执行的。如果使用选项–ignore = errors,则默认配置将被覆盖。
另外,带(^)标记的可以使用特殊注释在行级别禁用这些检查。
忽略警告
直接上图

File->Setting->Editor ->inspections -> PEP 8 naming convention/code style violation ->选择是要忽略部分警告还是直接关掉。
我的推荐是关N802、N803、N806,因为和很多代码的规范有点区别。这个就看个人喜好了。
参考链接
1、PEP 8 Coding错误代码一览表
2、PEP 8 Naming错误代码一览表
3、Python PEP 8样式指南
4、Python函数命名-PEP8编码规范的说明及IDE提示的忽略
本文介绍了Python代码风格指南PEP 8,包括缩进、导入和空格建议,讨论了错误代码和如何忽略警告。PEP 8旨在提高代码可读性,虽然不强制,但推荐遵守。文章提供了示例并提到了PyCharm中设置PEP 8检查的方法。
4194

被折叠的 条评论
为什么被折叠?



