PEP 8简介、错误代码与警告忽略

本文介绍了Python代码风格指南PEP 8,包括缩进、导入和空格建议,讨论了错误代码和如何忽略警告。PEP 8旨在提高代码可读性,虽然不强制,但推荐遵守。文章提供了示例并提到了PyCharm中设置PEP 8检查的方法。

最近和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提示的忽略

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值