Google Python 代码风格规范
相关信息
本教程中的所有示例代码均遵循本章节所述的风格规范。
警告
请不要跳过本节内容。这对与你和与你协作的人(尤其是后者)至关重要!
为什么需要?
请阅读以下两段代码:
def int_to_hexa(int_code):
result=""
l=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]
while int_code>=16:
result=result+l[int_code%16]
int_code//=16
result=result+l[int_code%16]
return result[::-1]
if __name__=="__main__":
int_code=16;hexadecimal_code=int_to_hexa(int_code)
print(int_code,'converts to',hexadecimal_code)
int_code=255;hexadecimal_code=int_to_hexa(int_code)
print(int_code,'converts to',hexadecimal_code)def int_to_hexa(int_code):
result = ''
l = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
while int_code >= 16:
result = result + l[int_code % 16]
int_code //= 16
result = result + l[int_code % 16]
return result[::-1]
if __name__ == '__main__':
int_code = 16
hexadecimal_code = int_to_hexa(int_code)
print(int_code, 'converts to', hexadecimal_code)
int_code = 255
hexadecimal_code = int_to_hexa(int_code)
print(int_code, 'converts to', hexadecimal_code)这两个代码除了格式之外是完全一样的,并且都符合 Python 语法规范,可以正常运行。但是从可读性上来说,版本二要远远优于版本一。良好的代码风格可以让代码更易读、更易维护,也能减少错误的发生。因此,遵循统一的代码风格规范是非常重要的。
此外,当我们在团队中协作开发时,协作工具往往会记录那行代码被更改了。使用统一的格式规范可以避免因为格式化工具的差异,产生大量无意义的代码变更记录,从而提高协作效率。
在 VS Code 中,使用 yapf 或 Black 等插件可以帮助我们自动格式化代码,确保代码风格的一致性。具体请见VS Code Python 格式化插件
风格规范
关于具体的要求请你阅读 Google Python Style Rules 或 菜鸟教程提供的中文版。
我们在这里仅总结一些最重要的点。
缩进
请严格使用 4 个空格进行缩进,不要使用制表符 \t。
事实上,在大多数 Python 编辑器中,即便你按下 Tab 键也会自动插入 4 个空格,而不是制表符。
空格
二元运算符
在所有的二元运算符(如赋值运算符 =,算术运算符 + - * /, 比较运算符 == != < > in and or not 等)两边都应该加一个空格:
相关信息
谷歌官方允许你自行决定是否要在算术运算符后面加空格,但我劝你加上。
# 正确
a = b + c
# 错误
a=b+c例外情况:
- 函数定义和调用时,等号
=两边不要加空格# 正确 def func(a=1, b=2): pass func(x=3, y=4) # 错误 def func(a = 1, b = 2): pass func(x = 3, y = 4) - 对一个变量取反时,减号
-后面不要加空格:a = -a
逗号、分号、冒号
不要在逗号、分号、冒号前面加空格,但应该在它们后面加(除了在行尾)。
# 正确
a = [1, 2, 3]
# 错误
a = [1,2,3]
a = [1 , 2 , 3]注释
行内注释前面应有两个空格,然后再加上 # 符号和一个空格:
x = x + 1 # 增加 x 的值空行
顶级定义之间空两行(比如函数或者类定义)。
类定义与第一个方法之间、类内部的方法定义之间空一行。
特别地,函数或方法中,某些地方要是你觉得合适,就空一行,以提高可读性。
命名规则
变量名、函数名、方法名使用小写字母和下划线(_)命名风格(即蛇形命名法,snake_case)。
类名使用每个单词首字母大写的命名风格(即驼峰命名法,CamelCase)。
全局常量使用全部大写字母和下划线(_)命名风格(即全大写命名法,UPPER_SNAKE_CASE)。
引号
应该保持同一文件中字符串引号的一致性。选择 ' 或者 " 以后不要改变主意。
当且仅当你需要避免转义字符时,可以使用另一种引号。
多行列表和字典定义
事实上,此条目在这里意在提醒读者,当任意括号存在时,可以自由换行:
my_list = [
1,
2,
3,
]
my_dict = {
'a': 1, 'b': 2, 'c': 3,
}有关这一特性的更多风格规范,请阅读本页开头的文章。
版权所有
版权归属:异想之旅