美文网首页
PEP8 编码规范, 及开发中的一些惯例和建议

PEP8 编码规范, 及开发中的一些惯例和建议

作者: 不会忘的名字 | 来源:发表于2019-01-08 17:59 被阅读0次
  • 练习: 规范化这段代码
from django.conf import settings
from user.models import *
import sys, os
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

规范后的代码

import sys, os

from django.conf import settings

from user.models import *  # 不要写import *


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

print('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')

  • 代码规范注意的细节

1.import导包不要使用import *
2.导包顺序:标准库 ---第三方库---自定义库,标准库置顶,中间相互空一行,自定义库与代码间空2行
3.函数一般前后空2行,单行行长 80 字符: 防止单行逻辑过于复杂
4.单行注释2个空格#在隔一个空格
5.最后留一个空行,全局变量大写

  • 空格
    a: , 后面跟一个空格, 前面无空格 (行尾分号后无空格)
    b 二元操作符前后各一个空格, 包括以下几类:
    1. 数学运算符: + - * / // = & |
    2. 比较运算符: == != > < >= <= is not in
    3. 逻辑运算符: and or not
    4. 位运算符: & | ^ << >>
      当 = 用于指示关键字参数或默认参数值时, 不要在其两侧使用空格
  • 适当添加空行
    1 函数间: 顶级函数间空 2 行, 类的方法之间空 1 行
    2 函数内: 同一函数内的逻辑块之间, 空 1 行
    3 文件结尾: 留一个空行 (Unix 中 \n 是文件的结束符)
  • 注释
    1 忌: 逐行添加注释, 没有一个注释
    2 行尾注释: 单行逻辑过于复杂时添加
    3 块注释: 一段逻辑开始时添加
    4 引入外来算法或者配置时须在注释中添加源连接, 标明出处
    5 函数、类、模块尽可能添加 docstring
  • 命名
    1 好的变量名要能做到“词能达意” 见名知意
    2 除非在 lambda 函数中, 否则不要用 单字母 的变量名 (即使是 lambda 函数中的变量名也应该尽可能的有意义)
    3 包名、模块名、函数名、方法、普通变量名全部使用小写, 单词间用下划线连接
    4 类名、异常名使用 CapWords (首字母大写) 的方式, 异常名结尾加 Error 或 Wraning 后缀
    5 全局变量尽量使用大写, 一组同类型的全局变量要加上统一前缀, 单词用下划线连接
    6 函数名必须有动词, 最好是 do_something 的句式, 或者somebody_do_something 句式
  • 程序的构建
    1 函数是模块化思想的体现
    2 独立的逻辑应该抽离成独立函数,让代码结构更清晰,可复用度更高
    3 一个函数只做一件事情, 并把这件事做好
    4 大的功能用小函数之间灵活组合来完成
    5 避免编写庞大的程序, “大” 意味着体积庞大, 逻辑复杂甚至混乱
  • 自定义的变量名、函数名不要与标准库中的名字冲突
  • 语意明确、直白
    not xx in yy VS xx not in yy
    not a is b VS a is not b

相关文章

网友评论

      本文标题:PEP8 编码规范, 及开发中的一些惯例和建议

      本文链接:https://www.haomeiwen.com/subject/kwebrqtx.html