Python风格规范

Python风格规范

待整理:
https://github.com/zh-google-styleguide/zh-google-styleguide/blob/master/google-python-styleguide/python_style_rules.rst#行长度

下面列出一些注意点:

  • 异常
    • 像这样触发异常: raise MyException(“Error message”) 或者 raise MyException . 不要使用两个参数的形式 ( raise MyException, “Error message” ) 或者过时的字符串异常 (raise “Error message” ).
    • 模块或包应该定义自己的特定域的异常基类, 这个基类应该从内建的 Exception 类继承. 模块的异常基类应该叫做”Error”.
    • 永远不要使用 except: 语句来捕获所有异常, 也不要捕获 Exception 或者 StandardError
    • 尽量减少 try/except 块中的代码量.
  • 避免全局变量
  • 默认迭代器和操作符
    • 如果类型支持, 就使用默认迭代器和操作符. 比如列表, 字典及文件等.
    • Python风格规范
  • 建议按需使用生成器.
    • 注意在生成器函数的文档字符串中使用”Yields:”而不是”Returns:”.
  • 默认参数值
    • 不要在函数或方法定义中使用可变对象作为默认值.
    • Python风格规范
  • 尽可能使用隐式 false
    • 0,None, [], {}, “”都被认为是 false
    • 尽可能使用隐式的 false, 例如: 使用 if foo: 而不是 if foo != []: .
    • 永远不要用 == 或者!= 来比较单件, 比如 None. 使用 is 或者 is not.
  • 线程
    • 不要依赖内建类型的原子性.
    • 优先使用 Queue 模块的 Queue 数据类型作为线程间的数据通信方式
  • 不要在行尾加分号, 也不要用分号将两条命令放在同一行.
  • 每行不超过 80 个字符
    • 例外:1. 长的导入模块语句
    • 例外:2. 注释里的 URL
    • 不要使用反斜杠连接行.
  • 缩进
    • 用 4 个空格来缩进代码
    • 绝对不要用 tab, 也不要 tab 和空格混用
  • 空行
    • *定义之间空两行, 方法定义之间空一行
  • 空格
    • 括号内不要有空格.
    • Python风格规范
    • 不要在逗号, 分号, 冒号前面加空格, 但应该在它们后面加 (除了在行尾).
    • Python风格规范
    • 当’=’用于指示关键字参数或默认参数值时, 不要在其两侧使用空格.
      • Python风格规范
    • 不要用空格来垂直对齐多行间的标记, 因为这会成为维护的负担 (适用于:, #, = 等):
      • Python风格规范
    • 如果一个类不继承自其它类, 就显式的从 object 继承. 嵌套类也一样.
      • Python风格规范
      • 将相关的类和*函数放在同一个模块里. 不像 Java, 没必要限制一个类一个模块.
  • 字符串的格式化
    • Python风格规范
    • 避免在循环中用 + 和 += 操作符来累加字符串
    • Python风格规范
  • TODO 注释
    • Python风格规范
  • 导入格式
    • 每个导入应该独占一行
    • Python风格规范
    • 最通用到最不通用的顺序分组
      1. 标准库导入
      2. 第三方库导入
      3. 应用程序指定导入
  • 通常每个语句应该独占一行
    • Python风格规范
  • 访问控制
    • 对于琐碎又不太重要的访问函数, 你应该直接使用公有变量来取代它们,也就是不要set,get方法
  • 命名
    • 对类名使用大写字母开头的单词 (如 CapWords, 即 Pascal 风格), 但是模块名应该用小写加下划线的方式 (如 lower_with_under.py)
    • Type Public Internal
      Modules lower_with_under _lower_with_under
      Packages lower_with_under
      Classes CapWords _CapWords
      Exceptions CapWords
      Functions lower_with_under() _lower_with_under()
      Global/Class Constants CAPS_WITH_UNDER _CAPS_WITH_UNDER
      Global/Class Variables lower_with_under _lower_with_under
      Instance Variables lower_with_under _lower_with_under (protected) or __lower_with_under (private)
      Method Names lower_with_under() _lower_with_under() (protected) or __lower_with_under() (private)
      Function/Method Parameters lower_with_under
      Local Variables lower_with_under