首页 > 编程语言 > 详细

Python书写规范---PEP8规范

时间:2021-01-04 23:15:52      阅读:28      评论:0      收藏:0      [点我收藏+]

PEP8规范

简介

这篇风格指南随着时间的推移而逐渐演变,随着语言本身的变化,过去的约定已经过时了并确定了更多新的约定。 许多项目都有自己的编码风格指南。如果有任何冲突,优先使用该项目特定的指南。

代码布局

1.缩进:

  1. 每一级缩进使用4个空格。
  2. 续行应该与其包裹元素对齐,要么使用圆括号、方括号和花括号内的隐式行连接来垂直对齐,要么使用挂行缩进对齐 。
  3. 当使用挂行缩进时,应该考虑到第一行不应该有参数,以及使用缩进以区分自己是续行。

推荐写法

# 与左括号对齐

foo = long_function_name(var_one, var_two,

                        var_three, var_four)

# 用更多的缩进来与其他行区分

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)

不推荐写法

# 没有使用垂直对齐时,禁止把参数放在第一行

foo = long_function_name(var_one, var_two,

    var_three, var_four)

# 当缩进没有与其他行区分时,要增加缩进

def long_function_name(

    var_one, var_two, var_three,

    var_four):

    print(var_one)

2.行最大长度

  1. 所有行限制的最大字符数为79。
  2. 没有结构化限制的大块文本(文档字符或者注释),每行的最大字符数限制在72。

注:在字段或者注释较长时可以不必按照规范来写,有时候按照规范写会使阅读性更差,建议灵活变通

3.空行

  1. 顶层函数和类的定义,前后用两个空行隔开。
  2. 类里的方法定义用一个空行隔开。

4.Imports 导入

  1. 导入通常在分开的行,不推荐一行导入多个库,但是可以一行导入多个方法 例如:
推荐: import os

    import sys

不推荐:  import sys, os

也可以:

from subprocess import Popen, PIPE
  1. 导入总是位于文件的顶部,在模块注释和文档字符串之后,在模块的全局变量与常量之前。
  2. 导入应该按照以下顺序分组:
    • 标准库导入
    • 相关第三方库导入
    • 本地应用/库特定导入
    • 你应该在每一组导入之间加入空行。
  3. 推荐使用绝对路径导入,如果导入系统没有正确的配置(比如包里的一个目录在sys.path里的路径后),使用绝对路径会更加可读并且性能更好(至少能提供更好的错误信息) 注:大部分实际工作用的还是相对路径

5.Comments 注释

  1. 与代码相矛盾的注释比没有注释还糟,当代码更改时,优先更新对应的注释!
  2. 注释应该是完整的句子,且言简意赅,如果是方法函数应该有响应的方法功能,参数,返回值等具体详细信息注释。
  3. 当用英文书写时,遵循Strunk and White (译注:《Strunk and White, The Elements of Style》)的书写风格。
  4. 在非英语国家的Python程序员,请使用英文写注释,除非你120%的确信你的代码不会被使用其他语言的人阅读。 (应该暂时用不上)

6.约定俗成的命名约定

  1. Names to Avoid 应避免的名字
    • 永远不要使用字母‘l’(小写的L),‘O’(大写的O),或者‘I’(大写的I)作为单字符变量名。
    • 在有些字体里,这些字符无法和数字0和1区分,如果想用‘l’,用‘L’代替。
  2. 命名规则:
    • 匈牙利命名法
    • 大驼峰命名法
    • 小驼峰命名法
    • 下划线命名法

7.Programming Recommendations 编程建议

  1. 代码应该用不损害其他Python实现的方式去编写(PyPy,Jython,IronPython,Cython,Psyco 等)。 比如,不要依赖于在CPython中高效的内置字符连接语句 a += b 或者 a = a + b。这种优化甚至在CPython中都是脆弱的(它只适用于某些类型)并且没有出现在不使用引用计数的实现中。在性能要求比较高的库中,可以种 ”.join() 代替。这可以确保字符关联在不同的实现中都可以以线性时间发生。
  2. 和像None这样的单例对象进行比较的时候应该始终用 is 或者 is not,永远不要用等号运算符。
  3. 使用 is not 运算符,而不是 not … is 。虽然这两种表达式在功能上完全相同,但前者更易于阅读,所以优先考虑。

注意:如果你在写 if x 的时候,请注意你是否表达的意思是 if x is not None。举个例子,当测试一个默认值为None的变量或者参数是否被设置为其他值的时候。这个其他值应该是在上下文中能成为bool类型false的值。

# 推荐
if foo is not None

# 不推荐
if not foo is None

Python书写规范---PEP8规范

原文:https://www.cnblogs.com/xianyuTAT/p/14230924.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!