Python编程规范

排版

  • 缩进统一使用四个空格编写。
  • 文件中必须使用UTF-8编码。
  • 一行只写一条语句(包括加载模块时,必须每个模块独占一行)。
  • 相对独立的程序块之间、以及变量说明之后,必须添加空行。
  • 一行长度小于80个字符。
  • 操作符前后添加空格(有特殊情况)。
  • 模块加载顺序(标准库、第三方关联库、本地特定库、程序),并在这几组导入语句之间添加空行。
  • 避免“from ××× import * ”的导入方式,采用“from ××× import yyy”。
  • 文件头使用“#!/usr/bin/env python”指定解释器。

注释

  • 类和接口的注释写在类声明的下一行,并向后缩进四个空格。内容包括:功能描述需描述类和接口功能,并写明和其他类或接口之间的关系;属性清单列出该类或接口的接口方法的描述;修改记录包括修改人,修改日期和修改内容。
class Testclass():
    """
    功能描述:
    属性清单:
    修改记录:
    """
  • 公共函数的注释写在类声明的下一行,并向后缩进四个空格。内容包括:功能描述、输入参数、输出参数、返回值、调用关系、异常描述、修改记录
def test_fun():
    """
    功能描述:
    输入参数:
    输出参数:
    ……
    """
  • 公共属性的注释写在属性声明的上方,与声明保持同样的缩进。
#Compensate for border
x = x + 1
  • 模块注释写在import之前,不需要缩进。
"""
功 能:XXX类,该类主要涉及XXX功能
版权信息:XXX公司,版本所有(C) 2010-2017
修改记录:2015-3-17 12:00 XXX XXXXXXXX 创建
2017-3-17 12:00 XXX XXXXXXXX 修改 XXX
"""
  • 文档字符串多余一行时,末尾的"""要自成一行。
  • 注释必须与其描述的代码保持同样的缩进,且位于代码上方。
  • 全局变量应该有详细的注释说明。

命名

  • 包和模块名使用意义完整的英文描述,风格为小写单词加下划线的组合。
  • 类名使用意义完成的英文描述,风格为大写字母开头的单词。
  • 函数、方法、函数参数使用意义完整的英文描述,风格为小写单词加下划线的组合。
  • 变量使用小写加下划线的风格命名。常量使用大写加下划线的风格命名。
  • 类或对象的私有成员使用单下划线开头;对于需要被继承的基类成员,如果想要防止与派生类成员重名,可用双下划线开头。

编码

  • 与None比较时采用“is”或“is not”。
  • 在模块中定义all,将允许外部访问的变量、函数、类名放进去。
__all__ = ["sample_external_function"]

def sample_external_function():
    print("This is an external function..")

def sample_internal_function():
    print("This is an internal function..")

  • 避免不同对象使用同一命名。
  • 类中的方法根据具体场景选择使用@staticmethod或者@classmethod进行修饰。一般的类方法要接收一个self参数表示此类的实例,但有些方法不需要访问实例,这时分为两种情况: 1、方法不需要访问任何成员,或者只需要显式访问这个类自己的成员。这样的方法不需要额外参数,应当用@staticmethod装饰;2、方法不需要访问实例的成员,但需要访问基类或派生类的成员。这时应当用@classmethod装饰。
  • 避免在无关变量或无关概念之间重用名字。

异常处理

  • try...except...结构对代码作保护时,需在异常后使用finally...结构确保释放操作对象。
  • 不要使用except语句来捕获所有异常,每次只捕获一种异常。
  • 不在except分支里面的raise都必须带异常。
  • 禁止使用except X,x语法,应该使用except X as x。
  • assert语句只能使用在测试代码中,禁止在生产版本中包含assert功能。

编程实践

  • 函数参数中的可变参数,不要使用默认值,在定义时使用None。
  • 对子类继承的变量要做显式定义和赋初值。
  • 严禁使用注释行等形式仅使功能失效,不用的功能必须彻底删除。
  • 使用os.path库中的方法代替字符串拼接来完成文件系统路径的操作。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容