Python代码规范-简化版

参考:https://blog.csdn.net/dqchouyang/article/details/81714619?ops_request_misc=&request_id=&biz_id=102&utm_term=python%20脚本规范&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-81714619.pc_search_result_control_group&spm=1018.2226.3001.4187

为什么要有代码规范?

  1. 好的规范会形成好的编码风格,看着熟悉、亲切,心情好
  2. 增加可读性,易维护,提高工作效率

python代码规范
1.缩进
4个空格,在linux系统下体现比较明显,IDE会将Tab转成4个空格,放心使用

2.行的最大长度
每行代码的最长字符数不超过80个,一屏可以看完,不需要左右移动

3.空行
本页的一级类或者方法之间空2行,二级类和方法之间空1行

class A(object):
    # 空1行
    def __init__(self):
        a = 1
    # 空1行 
    class B(object):
        b = 1
    # 空1行   
    class C(object):
        c = 1
    # 空1行
    def aa(self):
        aa = self.B()
# 空1行
# 空1行
class B(object):
    # 空1行
    def __init__(self):
        a = 1
# 空1行
# 空1行
def a():
    return True
# 页尾空1行

4.类命名
大驼峰命名:所有单词的首字母都大写,并且不使用特殊字符、下划线和数字

# ✔️
class CodeStandard(object):

# ❌
class Code-Standard(object):
class Code_Standard(object):
class _CodeStandard(object):
class codeStandard(object):
class Codestandard(object):
class Codestandard2(object):

5.方法命名
全小写字符或者下划线,多单词用下划线连接,但下划线不能做首字母

# ✔️
def code_standard():

# ❌
def Code_standard():
def _codestandard():  # 內建函数,受保护
def __codestandard():  # 內建函数,受保护
def code__standard():
def codestandard():

6.常量命名
以大写字母开头,全部大写字母或下划线或数字,多见于项目的settings文件中

MAX_SIZE = 100

7.注释
单行注释:若注释独占一行,#号顶头,空1格后写注释;若是行尾注释,空2格后#号再空1格写注释
多行注释:三对双引号(推荐使用)和三对单引号
复杂逻辑一定要写注释,除非这个项目就你一个人管一辈子

# 代码注释
def code_standard():  # 代码注释

"""
A...
B...
"""

'''
A...
B...
'''

8.导入
每个文件头,都会有一些导入,导入顺序为:先导入python包,再导入第三方包,最后导入自定义的包。不使用的包不要导入,不要两个文件循环导入

import sys, os  # python包,可导入多个
import pytz  # 第三方包
from datetime import datetime  # python包
from django.http import request, response  # 第三方包
from mysite.test import Test  # 自定义包
from mysite.test import *  # 不要用 import * 的这种代码

9.空格
给变量赋值时,变量后空1个格,运算符或逗号后空1个格,作为参数时符号前后不空格

# ✔️
a = 1
a += 2
def b(num=0):

# ❌
a = 111  # 不要值都右对齐
b =   2
c =  23

10.try
代码中要尽量少的出现 异常捕获 的代码,有些临界值或极值你是可以预见的,如果没有预见,那就让代码报错,重新修改代码,这是一个好的方式,加多了异常捕获,反而会导致问题难以定位,劳心劳力,劳民伤财,编码的好心情就没了。异常也分好多种类型,可以根据不同的类型去做出相应的逻辑处理

# ❌
try:
    a += 2
except Exception, e:
    log.error(e)  # 最讨厌这种,出错无法定位

11.全局变量名
没有特殊需求,不要使用全局变量,有时候自己怎么掉坑里了都不知道

global aa

12.变量和传参不要使用关键字

# ❌
len = 0
type = 'mysql'
id = 1
str = 'ffe'
def aa(type='mongo'):

13.方法的参数默认值中,不要有列表的默认值(参数传的是指针)

# ❌
def a(a, b=[]):
    b.append(a)
    return b

>>> a(1, b=list('a'))
['a', 1]
>>> a(2, b=list('a'))
['a', 2]
>>> a('a')
['a']
>>> a('b')
['a', 'b']
>>> a('c')
['a', 'b', 'c']  # 这就是经常说,为啥我的结果有以前的重复的数据,解决:方法头重新定义列表

14.方法的返回值
优先返回True或False,
其次是返回数据,但一定要保证返回的数据类型是一致的,别if里返回的是True,else里返回的是数据。很伤脑筋的。

项目示例规范

.
├── README.md  # 项目说明
├── db.sqlite3  # sqlite文件数据库,一般采用关系型和非关系型数据库(没有此文件)
├── draw  # 主项目目录(里面可建多app)
│   ├── __init__.py  # 导入的根文件
│   ├── admin.py  # 项目管理员配置看到的信息
│   ├── migrations  # 数据库迁移脚本目录
│   │   ├── 0001_initial.py  # 迁移脚本
│   │   └── __init__.py
│   ├── models.py  # 数据建模,项目中最重要的东西
│   ├── settings.py  # 项目的环境变量
│   ├── urls.py  # 项目的路由,url的跳转(不要使用反射,url规范如下)
│   ├── views.py  # 视图层,逻辑处理
│   └── wsgi.py  # 项目服务的启动入口
├── manage.py  # 项目命令的入口
├── media  # 上传上来的媒体文件的存放位置
│   └── avatar  # 分类目录
│       └── mac_bsk3xvr.png  # 媒体文件(头像)
├── requirements.txt  # 项目使用的环境包和版本
├── static  # 项目使用的静态文件目录
│   ├── css  # 样式文件目录
│   │   └── application.css  # 样式文件
│   ├── img  # 图片目录
│   │   ├── header_bg.jpg  # 图片文件
│   │   ├── header_bg1.jpg
│   │   ├── header_bg_repeat.png
│   │   └── header_icons.png
│   └── js  # 脚本目录
│       ├── application.js  # 脚本目录
│       ├── jquery-1.8.0.min.js
│       └── rand.js
└── templates  # html模板目录
    └── index.html  # html文件

url规范
优秀的URL是可以表达这个接口所实现的功能的

api/zoos/   #所有动物园  
api/zoos/1/   #id为1的动物园  
api/zoos/1/animals/   #id为1的动物园中的所有动物  

python典型写法

a, b = (1, 2)

a, b = 1, 2

a, b = b, a

c = a if a > b else b

aa = [1,2,3,4,5]
c = [n for n in aa if a > 2]  # 推导式

with open(a.txt) as f:
    ...
   
匿名函数-lambda
g = lambda s: s + ".fsh"
g("haha")
haha.fsh

高阶函数-filter、reduce、map
aa = ['a', 'b','c', 'd']
def fun1(s):
    return s if s != 'a' else None
ret = filter(fun1, aa)
ret
['b', 'c', 'd']

修饰器-@
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容