资讯专栏INFORMATION COLUMN

PEP 8 摘录

AdolphLWQ / 456人阅读

摘要:关于命名不同的对象会有不同的规范包小写,可以使用但是不推荐使用下划线。如果需要捕捉所有扰乱程序的异常,可以使用对于不同的输入,函数的返回值类型应该保持一致字符串操作中,尽可能使用字符串类的方法判断对象的类别,尽量使用欢迎讨论,欢迎指出问题

前言

PEP 8 是python代码规范说明,里面规定了一些推荐的python代码的格式与用法。笔者将在本文中做一些总结,不是为了纯粹的翻译PEP 8,而是根据个人习惯与喜好进行的一个整理。如有谬误,欢迎指出。

PEP 8 官方文档:这里

A Follish Consistency is the Hobgoblin of Little Minds

永远不要为了和已有的文档保持一致而特意做出不自然的改变,否则,这只会限制你的思维,降低你的效率。Guido在这里写下的这些规范是处于代码的可读性考虑的,但是如果有的时候这些规范也不一定适用,例如:

如果使用了这些规范会降低可读性;

如果代码写于规范面世以前;

如果代码使用到了老版本的依赖库,然而这些老版本的依赖库且兼容新的规范;

如果已有代码使用了另外的一种风格;

代码规范

多参数情况下适当缩进

# function
def long_function_name(  # no argument on the first line
        var_one, var_two,  # more indentation to distinguish this from the rest
        var_three, var_four):
    print(var_one)
# list
my_list = [
    1, 2, 3,
    4, 5, 6,
    7, 8, 9,  # add a comma here to be consistent with the preceding lines
    ]
# long if -statement
if (this_is_one_thing
        and that_is_another_thing)  # more indentation to distinguish this
    do_something()

使用4个空格键替代制表键

每行字符数控制在79个以内,必要的时候可使用

with open("/path/to/the/file/to/read") as file_1, 
     open("/path/to/the/file/to/read") as file_2:
    file_2.write(file_1.read())

多行分别import依赖库,且须放在全局变量和常量之前

import os
import sys
import other_standard_libraries
import related_third_parties
ipmort local applications

python不区分双引号"和单引号",选一个适合你自己的风格,然后坚持下去

空白符的规则很繁琐,基本上和英文书写的规范一致,下面列举了部分情况

ham[1:9], ham[1:9:3], ham[1::3], ham[1:9:]
ham[lower+offset : upper+offset]  # equal amounts on either side of the operator

在分配默认值或者键值对赋值的时候,等号=周围不要用空格

def complex(real, imag=0.0):
    return magic(r=real, i=img)

关于注释,不要添加与代码逻辑相违背的注释,也不要添加显而易见的注释。记住一点,注释是为了增强可读性。

关于命名,不同的对象会有不同的规范:

包:小写,可以使用但是不推荐使用下划线_。一些利用C/C++编写的包的名字可以以下划线开头;

类:CapWords命名规范,例如CapitalizeWords, HTTPServerError

异常:其本质是一个类,所以沿用上面的规范,另外需要以Error_开头

函数:小写,并且用下划线隔开

方法与变量:沿用函数的命名规范,另外非公有变量需要以_开头

方法规范

None作比较的使用,不要使用==,使用is或者is not

字符串的合并操作不要使用a += b或者a = a + b,使用"".join()

Excepetion而不是BaseException库中继承异常

抛出异常的时候,请使用raise ValueError("message")

在捕捉异常语句中,请尽可能指明捕捉的异常类别。如果需要捕捉所有扰乱程序的异常,可以使用

try:
    some_magic()
except Exception as exc:
    print(str(exc))
    raise some_error
else:
    everything_is_good()
finally:
    clean_up()

对于不同的输入,函数的返回值类型应该保持一致

def foo(x):
    if x >= 0:
        return math.sqrt(x)
    else:
        return None  # should also be a value or None

字符串操作中,尽可能使用字符串类的方法

"".startswith()
"".endswith()

判断对象的类别,尽量使用isinstance()

欢迎讨论,欢迎指出问题
Weiming
25 May 2016

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37967.html

相关文章

  • 如何用PEP 8编写优雅的Python代码

    摘要:如果需要在二元运算符周围做换行操作,例如和,那么需要将换行操作放在前面,这条规则源于数学,数学家同意在二元运算符之前换行以可提高可读性,比较以下两个例子。在二元运算符之前换行可以让代码更加具有可读性,所鼓励这种方式。 原文地址:How to Write Beautiful Python Code With PEP 8 作者:Jasmine Finer 翻译:howie6879 ...

    seanHai 评论0 收藏0
  • 学习Python,怎能不懂点PEP呢?

    摘要:或许你是一个初入门的小白,完全不知道是什么。到目前为止,它拥有个兄弟姐妹。此外,关于对的贡献,还有一种很有效的方式,就是将翻译成中文,造福国内的学习社区。 或许你是一个初入门Python的小白,完全不知道PEP是什么。又或许你是个学会了Python的熟手,见过几个PEP,却不知道这玩意背后是什么。那正好,本文将系统性地介绍一下PEP,与大家一起加深对PEP的了解。 目前,国内各类教程不...

    Magicer 评论0 收藏0

发表评论

0条评论

AdolphLWQ

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<