Python编码规范

Python官方文档: https://www.python.org/dev/peps/pep-0008/


代码风格:

  • 使用4个空格来表示缩进,最好不使用tab,更勿将两者混用
  • 函数间换行至少一行
  • 类之间换行至少两行
  • 字典,列表,元祖中元素应该在逗号前添加一个空格
  • 字典中键后面的冒号:应在值与冒号:之间添加空格,而不是:与键之前间. 比如说: {‘name’:‘tom’}
  • 较长代码(>79字符)使用\换行。换行后新行的起始处应该与前一个分隔符对齐(是参数换行则与左括号对齐
  • import位于module comments与docstring之后,常量声明之前
  • 如多模块,请分开导入. 像import os, sys是不规范的.
  • Docstring的常规写法

   """Return foobang


   Optional plotz says to frobnicate the bizbaz first.

   """

  • Python 3.0以下版本的代码文件建议以latin字符编码。3.0以上则推荐utf-8
  • 代码中有操作符运算,请注意优先级,优先的操作紧缩,或者加括号
  • “=”,”==”左右两边加一个空格如:  if x == 1: print(‘OK’), 但在函数或方法中最好不用空格

   比如说:def func(file=’d://1.txt’)

  • 尽量不要将多行代码放在同一行
  • 少使用行后注释
  • 用#开头的多行函数注释,保持与目标函数相同的缩进
  • docstring ,开头一行写上返回值,接下来一行写函数功能描述,后可按照格式>>> func(arg1, arg2, arg3) / r 返回值,以便于测试.
  • 另外,若要使用subversion,cvs等源代码管理工具。可以在函数的docstring 之后,code之前写上__version__ = "$Revision:$"


命名规则:

  • 尽量少用 'l' , 'O' , or 'I',单字母作为变量的命名.---说老实话,这样很容易混淆,搞不清楚谁是谁!
  • 包和模块应该用短且全小写字母:modulename
  • 类名首字母大写的形式命名:ClassName
  • 异常类则用以Error结尾的字符串命名为宜: YourError
  • 全局变量尽量只是设计用于模块内使用,并且可以用import *时,包内的__all__机制来除去全局变量
  • 函数名尽量都用小写且单词间以_(下划线)连接,比如说:function_name(arg1, arg2, *args, **kwargs)
  • 函数和方法参数,self作为实例方法的第一个参数,cls作为类方法的第一个参数,倘若参数名与关键字相同,为了避讳,则应该加个下划线
  • 方法名&类实例的属性方法名规则与函数名相同,类实例私有属性和类实例的私有方法以单个下划线开头_private_fuc_name(self)
  • 常量全大写,多个单词的话以下划线间隔: TOTAL 或 CONSTANT_VAR
  • 面向对象设计建议:

  1. 若对类实例中的属性是设置成public的好还是private好,可以考虑先设置成private,其修改成本更低.
  2. private不能被第三方使用,因为随时有可能被删除、废弃,public属性不能用下划线开头
  3. 避免属性使用大运算量操作
  4. 倘若不想被子类继承的属性,应该用双下划线开头,且最后没有下划线。这样会启动python的命名识别矫正处理算法,保证不被继承

编码建议:

  • 无论是在哪种Python(Cython,Jython,IconPython,PyPy等),保持一致的格式。比如说,要联合两个字符串,a = a + b, a += b,都不如用’’.join()好。
  • None前面别用==,而应该用is或者is not.
  • 用is not,而不是not is

   正确: ifa is not None:   

   错误: if a not isNone:   

  • 一旦涉及到__eq__ , __ne__ , __lt__ , __le__ , __gt__ , __ge__比较操作,最好6个全部实现,而不是只实现其中部分,而依赖其他函数.
  • 别用匿名函数来赋值给某个变量,而应该用def函数.

   正确: deff(x): return x*2

   错误: f = lambda x: x*2

  • 派生异常继承自Exception,而不是BaseException.

你可能感兴趣的:(python,代码规范)