python进阶之1. PEP8 编码规范, 及开发中的一些惯例和建议

  • 练习: 规范化这段代码

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

  • 为什么要有编码规范
    • 编码是给人看的还是给机器看的?
    • 美观是重点吗?
      1. 美观
      2. 可读性
      3. 可维护性
      4. 健壮性
    • 团队内最好的代码状态: 所有人写出的代码像一个人写出来的
  • 代码编排:
    • 缩进 4 个空格, 禁止空格与 Tab 混用
    • 行长 80 字符: 防止单行逻辑过于复杂
  • import
    • 不要使用 from xxx import *
    • 顺序
      1. 标准库
      2. 第三方库
      3. 自定义库
    • 单行不要 import 多个库
    • 模块内用不到的不要去 import
  • 空格
    • : , 后面跟一个空格, 前面无空格 (行尾分号后无空格)
    • 二元操作符前后各一个空格, 包括以下几类:
      1. 数学运算符: + - * / // = & |
      2. 比较运算符: == != > < >= <= is not in
      3. 逻辑运算符: and or not
      4. 位运算符: & | ^ << >>
    • 当 = 用于指示关键字参数或默认参数值时, 不要在其两侧使用空格
  • 适当添加空行
    • 函数间: 顶级函数间空 2 行, 类的方法之间空 1 行
    • 函数内: 同一函数内的逻辑块之间, 空 1 行
    • 文件结尾: 留一个空行 (Unix 中 \n 是文件的结束符)
  • 注释
    • 忌: 逐行添加注释, 没有一个注释
    • 行尾注释: 单行逻辑过于复杂时添加
    • 块注释: 一段逻辑开始时添加
    • 引入外来算法或者配置时须在注释中添加源链接, 标明出处
    • 函数、类、模块尽可能添加 docstring
  • 命名
    • 好的变量名要能做到“词能达意”
    • 除非在 lambda 函数中, 否则不要用 单字母 的变量名 (即使是 lambda 函数中的变量名也应该尽可能的有意义)
    • 包名、模块名、函数名、方法、普通变量名全部使用小写, 单词间用下划线连接
    • 类名、异常名使用 CapWords (首字母大写) 的方式, 异常名结尾加 Error 或 Wraning 后缀
    • 全局变量尽量使用大写, 一组同类型的全局变量要加上统一前缀, 单词用下划线连接
    • 函数名必须有动词, 最好是 do_something 的句式, 或者 somebody_do_something 句式
  • 语意明确、直白
    • not xx in yy VS xx not in yy
    • not a is b VS a is not b
  • 程序的构建
    • 函数是模块化思想的体现
    • 独立的逻辑应该抽离成独立函数,让代码结构更清晰,可复用度更高
    • 一个函数只做一件事情, 并把这件事做好
    • 大的功能用小函数之间灵活组合来完成
    • 避免编写庞大的程序, “大” 意味着体积庞大, 逻辑复杂甚至混乱
  • 自定义的变量名、函数名不要与标准库中的名字冲突
  • pip install pycodestyle pylint flake8 autopep8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值