参考Google开源项目风格指南,规范一下Python编程习惯,在这里记录一下本人认为较为重要的点,便于自己查阅.

Python语言规范

  • 导入:仅对包和模块使用导入,而非函数或类,'typing'模块除外
  • Lambda函数:lambda input : output.和条件表达式:x = 1 if cond else 2.适用于单行函数
  • 尽可能使用隐式False.在Python中0,None,[],{}和""都被认为是False
  • 使用代码类型注释以提供代码可读性和可维护性,eg:def func(a: int) - >List[int] or a: SomeType = some_function()

Python风格规范

  • 命名规范

    模块名写法(文件名): module_name
    包名写法: package_name
    类名: ClassName
    方法名: method_name
    异常名: ExceptionName
    函数名: function_nam
    全局常量名: GLOBAL_CONSTANT_NAME
    全局变量名: global_var_name
    实例名: instance_var_name
    函数参数名: function_parameter_name
    局部变量名: local_var_name
    函数名,变量名和文件名应该是描述性的,尽量避免缩写,特别要避免使用非项目人员不清楚难以理解的缩写,不要通过删除单词中的字母来进行缩写. 始终使用 .py 作为文件后缀名,不要用破折号.
    

    下划线开头: 单下划线_开头意味着受保护的内部变量/函数,不会被import导出, 双下划线__开头意味着类的私有变量或方法. 内部意味着模块内,类内私有/保护变量/方法.

  • 行长度:不超过80个字符.不推荐使用\连接行,可利用(),{}和[]中的行隐式连接特点连接行

  • 括号:宁缺毋滥地使用括号.不要再返回或者条件语句中使用括号,但是元组中使用括号是可以的

  • 缩进:用4个空格来缩进代码,绝对不要使用tab

  • 仅当'],)和}'与末尾元素不同一行时,额外添加,以便指示序列格式化为每行一项

  • 顶级定义中缠绵空两行,方法定义之间空一行

  • 程序的main文件应该以 #!/usr/bin/python3 开始.

  • 类:如果怕一个类不继承自其他类,就显示地从object继承.嵌套类也一样.

  • 字符串:避免在循环中用+和+=来累加字符串.可用list.append()以及''.joint(list)代替.

  • TODO注释的格式:# TODO(name@email): what you want to do

  • 导入格式:每个导入应该独占一行, typing的导入除外.导入顺序应为标准库 第三方库 本地库,内部按照字母表顺序排列.

  • 主功能应该放在一个main()函数中.并以if __name__ == '__main__':进行保护

  • 函数长度:功能尽量集中,简单,小巧.尽量不超过40行,否则应考虑拆分.