本文简单介绍一下Python写代码过程中的简单规范。当然,我们可以在写完代码后,使用pep8
或者flake8
工具来进行代码规范的检查
1 推荐使用pep8检查python代码规范
1 | pip install pep8 |
运行python代码时,执行:
1 | pep8 xxx.py |
2. True/False使用
尽可能使用隐式的False,按简单的直觉来讲,就是所有的“空”值都是False,因此0、None、[]、{}、””都被认为是False
注:
永远不要使用==或者!=来比较单件,比如None 利用 is或者 is not,其中if x:,实际的含义就是if x is not None: 对于非None的比较,使用if not x:
处理整数时, 使用隐式false可能会得不偿失(即不小心将None当做0来处理). 你可以将一个已知是整型(且不是len()的返回结果)的值与0比较.
3. Lambda函数
适用于单行函数
1 | >>>func = lambda x: x*2 # 定义lambda函数,并将其赋给func,通过func调用 |
4. 函数和方法装饰器
如果好处很显然, 就明智而谨慎的使用装饰器
下面两段代码是等效的
1 | class C(objext): |
等价于
1 | class C(object): |
5. 空行
顶级定义之间空两行,方法定义之间空一行
顶级定义(函数或这类定义)之间空两行,方法定义以及类与第一个方法之间,都该空一行
6. 空格
按照标准的排版规范来使用标点两边的空格
括号内不要有空格
1 | spam(ham[1], {egg: 2},[]) |
不要在逗号、分号、冒号前面加空格,但应该在他们后面加(除了在行尾)
1 | if x ==4: |
在二元操作符两边都要加上一个空格。比如:赋值(=),比较(==, <, >, !=, >=, <=, in, not in, is, is not),布尔(and, or, not)
1 | if x ==4: |
‘=’用于只是关键字参数或默认参数时,不要在其两端加空格
1 | def complex(real, image=0.1): return magic(r=real, i=image) |
7. 类
如果一个类不继承自其他类,就显式的从object类继承
1 | class SimpleClass(object): |
8. 字符串
即使参数都是字符串,使用%操作符或者格式化方法格式化字符串,不过也不能一概二论,需要在+和%之间好好判断
1 | x = a + b |
9. 文件和sockets
在文件和sockets结束时,显示的关闭它
推荐使用with语句管理文件
1 | with open('hello.txt') as hello_file: |
10. 导入格式
每个导入应该独占一行
1 | import os |
导入顺序:
- module_name
- package_name
- ClassName
- method_name
- ExceptionName
- function_name
- GLOBAL_VAR_NAME
- instance_var_name
- function_parameter_name
- local_var_name