Python规范----PEP8

python规范—PEP8

导入

  • 导入的时候一般遵循,标准库–》第三方库—》自定义库,并且之间有一行空格
  • 导入部分和内容部分空两行
  • 一行不要导入多个

内容

  • 顶格内容之间都是需要加2行空行
  • 全局变量一般使用全部大写或者全部小写,多个单词的时候使用下划线分割
  • 逗号后面需要空一格,冒号也是左边不需要空格,右边空一格,分号也是,Python支持分号换行
  • 等号等两元操作符前后都需要一个空格,% ==
  • 方法名字后面紧跟着小括号,不需要加空格
  • 方法定义完,第一句是文档注释’’’’’’

注释

  • 左边至少2格
  • 代码编排

    • 推荐使用4个空格,代表着4个字符,不要tab和空格混合使用
    • 制表符tab的长度不稳定,长度和配置相关,tab在所有编辑器里都是可以配置的,还有行长提醒的线,Python严格区分代码的缩进层级
    • 行长80
  • 结尾加空行,可以在编译器中配置

  • 一个函数在一屏幕之内
  • import 中的 是指的all里面的东西

  • *代表解包,注意下划线可以作为变量:

    1
    2
    3
    4
    5
    6
    l = [1,2,3,4,5,6,7,8,9,0]
    a,b, *_,c = l
    #---------
    结果:
    a,b,c=(1,2,0)
    _=[3,4,5,6,7,8,9]
  • 等号和is,is是用来判断内存地址的,使用id()可以查看,==判断值是否相等


编码规范

  1. PEP8 编码规范, 以及开发中的一些惯例和建议
    • 代码编排:
      • 缩进 4 个空格, 禁止空格与 Tab 混用
      • 行长 80: 防止单行逻辑过于复杂
    • import
      • 不要使用 from xxx import *
      • 顺序
        1. 标准库
        2. 第三方库
        3. 自定义库
      • 单行不要 import 多个库
      • 模块内用不到的不要去 import
      • import * 其实是引入的all魔法函数中的内容
    • 空格
      • : , ; 后面跟一个空格, 前面无空格 (行尾分号后无空格)
      • 二元操作符前后各一个空格, 包括以下几类:
        1. 数学运算符: + - * / // = & |
        2. 比较运算符: == != > < >= <= is not in
        3. 逻辑运算符: and or not
        4. 位运算符: & | ^ << >>
      • = 用于指示关键字参数或默认参数值时, 不要在其两侧使用空格
    • 适当添加空行
      • 函数间: 顶级函数间空 2 行, 类的方法之间空 1 行
      • 函数内: 同一函数内的逻辑块之间, 空 1 行
      • 文件结尾: 留一个空行 (Unix 中 \n 是文件的结束符)
    • 注释
      • : 逐行添加注释,没有一个注释
      • 行内注释: 单行逻辑过于复杂时添加
      • 块注释: 一段逻辑开始时添加
      • 引入外来算法或者配置时须在注释中添加源连接, 标明出处
      • 函数和类尽可能添加 docstring
    • 命名
      • 除非在 lambda 函数中, 否则不要用 单字母 的变量名 (即使是 lambda 函数中的变量名也应该尽可能的有意义)
      • 包名、模块名、函数名、方法名全部使用小写, 单词间用下划线连接
      • 类名、异常名使用 CapWords (首字母大写) 的方式, 异常名结尾加 ErrorWraning 后缀
      • 全局变量尽量使用大写, 一组同类型的全局变量要加上统一前缀, 单词用下划线连接
    • 字符串拼接尽量使用 join 方式: 速度快, 内存消耗小,字符串是不可变的
    • 语意明确、直白
      • not xx in yy VS xx not in yy
      • not a is b VS a is not b
    • 程序的构建
      • 一个函数只做一件事情, 并把这件事做好
      • 大的功能用小函数之间灵活组合来完成
      • 避免编写庞大的程序, “大” 意味着体积庞大, 逻辑复杂甚至混乱
      • 推荐一个函数的长度不要超过一屏幕
    • 函数名必须有动词, 最好是 do_something 的句式, 或者 somebody_do_something 句式
    • 自定义的变量名、函数名不要与标准库中的名字冲突
    • pip install pep8 pylint flake8
    • 规范化这段代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sys, os
from django.conf import settings

mod = 0xffffffff


def foo(a, b=123):
c = {'x': 111, 'y': 222} # 定义一个字典
d = [1, 3, 5]
return a, b, c


def bar(x):
if x % 2 == 0:
return True