5.空行
顶层函数和类定义,前后用两个空行隔开;
编码格式声明,模块导入,常量和全局变量声明,顶级定义和执行代码之间空两行;类里面方法定义用一个空行隔开;
在函数活方法内部,可以在必要的地方空一行来增强节奏感,不能连续空行
6.制表符还是空格
不要混用制表符和空格,因为如果混用了,虽然在编辑环境中显示两条语句为同一缩进层次,但因为制表符和空格的不同会导致 Python 解释为两个不同的层次。
在调用 Python 命令行解释器时使用 -t 选项,可对代码中不合法的混合制表符和空格发出警告,使用 -tt 时警告将变成错误,这些选项是被高度推荐的。但是强烈推荐仅使用空格而不是制表符。
空格使用规则:在二元运算符两边各空一格,比如赋值(=)、比较(==, <, >, !=, <>, <=, >=, in, not in, is, is not), 布尔(and, or, not),算术操作符两边的空格可灵活使用,但两侧务必要保持一致
不要在逗号、分号、冒号前面加空格,但应该在它们后面加(除非在行尾)
函数的参数列表中,逗号之后要有空格
函数的参数列表中,默认值等号两边不要添加空格
左括号之后,右括号之前不要加添加空格
参数列表, 索引或切片的左括号前不应加空格
当'='用于指示关键字参数或默认参数值时,不要在其两侧使用空格
6.命名规范
模块名命名:模块应尽量使用小写命名,首字母保持小写,尽量不用下划线
变量命名:尽量小写,多个单词用下划线隔开
常量或者全局变量命名:全部大写,用下划线隔开多个单词;全大写+下划线式驼峰
函数命名:用小写,用下划线隔开多个单词;私有函数在函数前加一个下划线
类命名:使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头;在接口被文档化并且主要被用于调用的情况下,可以使用函数的命名风格代替;对于内置的变量命名有一个单独的约定:大部分内置变量是单个单词(或者两个单词连接在一起),首字母大写的命名法只用于异常名或者内部的常量。
7.类里面函数和方法参数
始终self作为实例方法的第一个参数;始终将cls作为类方法的的一个参数
8.模块导入规则
导入应该放在文件顶部,位于模块注释和文档字符串之后,模块全局变量和常量之前;导入应该按照从最通用到最不通用的顺序分组:标准库导入、第三方库导入、应用程序指定导入,分组之间空一行模块名称要短,使用小写,并避免使用特殊符号, 比如点和问号尽量保持模块名简单,以无需分开单词最佳(不推荐在两个单词之间使用下划线);每个导入应该独占一行
9.Main
主功能应该一个main()函数
10.函数设计规范
函数设计的主要目标就是最大化代码重用和最小化代码冗余。精心设计的函数不仅可以提高程序的健壮性,还可以增强可读性、减少维护成本;函数设计要尽量短小,嵌套层次不宜过深。 所谓短小, 就是尽量避免过长函数, 因为这样不需要上下拉动滚动条就能获得整体感观, 而不是来回翻动屏幕去寻找某个变量或者某条逻辑判断等。 函数中需要用到 if、 elif、 while 、 for 等循环语句的地方,尽量不要嵌套过深,最好能控制在3层以内。不然有时候为了弄清楚哪段代码属于内部嵌套, 哪段属于中间层次的嵌套, 哪段属于更外一层的嵌套所花费的时间比读代码细节所用时间更多。
尽可能通过参数接受输入,以及通过return产生输出以保证函数的独立性;尽量减少使用全局变量进行函数间通信。不要在函数中直接修改可变类型的参数;函数申明应该做到合理、 简单、 易于使用。 除了函数名能够正确反映其大体功能外, 参数的设计也应该简洁明了, 参数个数不宜太多。 参数太多带来的弊端是: 调用者需要花费更多的时间去理解每个参数的意思,测试的时候测试用例编写的难度也会加大;函数参数设计应该考虑向下兼容