Python 风格规范(Google)

本项目并非 Google 官方项目, 而是由国内程序员凭热情创建和维护。

如果你关注的是 Google 官方英文版, 请移步 Google Style Guide

以下代码中 Yes 表示推荐,No 表示不推荐。


分号

不要在行尾加分号, 也不要用分号将两条命令放在同一行。


行长度

每行不超过80个字符

以下情况除外:

  1. 长的导入模块语句
  2. 注释里的URL

不要使用反斜杠连接行。

Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号。

推荐: foo_bar(self, width, height, color='black', design=None, x='foo',emphasis=None, highlight=0)if (width == 0 and height == 0 andcolor == 'red' and emphasis == 'strong'):

如果一个文本字符串在一行放不下, 可以使用圆括号来实现隐式行连接:

x = ('这是一个非常长非常长非常长非常长 ''非常长非常长非常长非常长非常长非常长的字符串')

在注释中,如果必要,将长的URL放在一行上。

Yes:  # See details at# http://www.example.com/us/developer/documentation/api/content/v2.0/csv_file_name_extension_full_specification.html
No:  # See details at# http://www.example.com/us/developer/documentation/api/content/\# v2.0/csv_file_name_extension_full_specification.html

注意上面例子中的元素缩进; 你可以在本文的 :ref:`缩进 <indentation>`部分找到解释.


括号

宁缺毋滥的使用括号

除非是用于实现行连接, 否则不要在返回语句或条件语句中使用括号. 不过在元组两边使用括号是可以的.

Yes: if foo:bar()while x:x = bar()if x and y:bar()if not x:bar()return foofor (x, y) in dict.items(): ...
No:  if (x):bar()if not(x):bar()return (foo)

缩进

用4个空格来缩进代码

绝对不要用tab, 也不要tab和空格混用. 对于行连接的情况, 你应该要么垂直对齐换行的元素(见 :ref:`行长度 <line_length>` 部分的示例), 或者使用4空格的悬挂式缩进(这时第一行不应该有参数):

Yes:   # 与起始变量对齐foo = long_function_name(var_one, var_two,var_three, var_four)# 字典中与起始值对齐foo = {long_dictionary_key: value1 +value2,...}# 4 个空格缩进,第一行不需要foo = long_function_name(var_one, var_two, var_three,var_four)# 字典中 4 个空格缩进foo = {long_dictionary_key:long_dictionary_value,...}
No:    # 第一行有空格是禁止的foo = long_function_name(var_one, var_two,var_three, var_four)# 2 个空格是禁止的foo = long_function_name(var_one, var_two, var_three,var_four)# 字典中没有处理缩进foo = {long_dictionary_key:long_dictionary_value,...}

空行

顶级定义之间空两行, 方法定义之间空一行

顶级定义之间空两行, 比如函数或者类定义. 方法定义, 类定义与第一个方法之间, 都应该空一行. 函数或方法中, 某些地方要是你觉得合适, 就空一行.


空格

按照标准的排版规范来使用标点两边的空格

括号内不要有空格.

按照标准的排版规范来使用标点两边的空格

Yes: spam(ham[1], {eggs: 2}, [])
No:  spam( ham[ 1 ], { eggs: 2 }, [ ] )

不要在逗号, 分号, 冒号前面加空格, 但应该在它们后面加(除了在行尾).

Yes: if x == 4:print x, yx, y = y, x
No:  if x == 4 :print x , yx , y = y , x

参数列表, 索引或切片的左括号前不应加空格.

Yes: spam(1)
no: spam (1)
Yes: dict['key'] = list[index]
No:  dict ['key'] = list [index]

在二元操作符两边都加上一个空格, 比如赋值(=), 比较(==, <, >, !=, <>, <=, >=, in, not in, is, is not), 布尔(and, or, not). 至于算术操作符两边的空格该如何使用, 需要你自己好好判断. 不过两侧务必要保持一致.

Yes: x == 1
No:  x<1

当'='用于指示关键字参数或默认参数值时, 不要在其两侧使用空格.

Yes: def complex(real, imag=0.0): return magic(r=real, i=imag)
No:  def complex(real, imag = 0.0): return magic(r = real, i = imag)

不要用空格来垂直对齐多行间的标记, 因为这会成为维护的负担(适用于:, #, =等):

Yes:foo = 1000  # 注释long_name = 2  # 注释不需要对齐dictionary = {"foo": 1,"long_name": 2,}
No:foo       = 1000  # 注释long_name = 2     # 注释不需要对齐dictionary = {"foo"      : 1,"long_name": 2,}

Python 编码规范(Google) (一)相关推荐

  1. Python 编码规范(Google)

    Python 风格规范(Google) 本项目并非 Google 官方项目, 而是由国内程序员凭热情创建和维护. 如果你关注的是 Google 官方英文版, 请移步 Google Style Guid ...

  2. 超详细Python 编码规范(Google)介绍

    前言 Python 风格规范(Google) 本项目并非 Google 官方项目, 而是由国内程序员凭热情创建和维护. 如果你关注的是 Google 官方英文版, 请移步 Google Style G ...

  3. pep8 python 编码规范_编码规范的重要性

    很多去 Google 参观的人,在用完洗手间后都有这样的疑惑,马桶前面的门上怎么会贴着 Python 编码规范?要知道,Google 对编码规范的要求极其严格,这也能从侧面说明编码规范的重要性. 对于 ...

  4. 《Python从小白到大牛》第5章 Python编码规范

    <Python从小白到大牛>已经上市! 俗话说:"没有规矩不成方圆".编程工作往往都是一个团队协同进行,因而一致的编码规范非常有必要,这样写成的代码便于团队中的其他人员 ...

  5. python编码规范手册-Python官方竟然给出了一种编码规范PEP 8

    写在之前 每个人都有自己的代码风格,随着写的行数增加,自己对于代码的审美也会变的不一样,这就像是一个逐渐蜕变的过程,每过一段时间回头再去看看自己之前写的代码就会生出一种「这么丑的玩意儿竟然是我写的」这 ...

  6. python编码规范手册-PEP8 Python 编码规范整理

    决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是工作或者说是工具,所以整理并遵循一套编码规范是十分必要的.所以今天下午我根据PEP 8整理了一份,以后都照此 ...

  7. PEP8 Python 编码规范整理

    决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是工作或者说是工具,所以整理并遵循一套编码规范是十分必要的.所以今天下午我根据PEP 8整理了一份,以后都照此 ...

  8. Python 编码规范 TODO注释

    如: # TODO(Dontla): 提取filenames中数字# TODO(Dontla): 重新构建并写入文件 快捷键:alt+6 ,快速找出所有待办TODO 参考文章1:Python编码规范- ...

  9. python经典书籍推荐:python编码规范

    目录 INF-qa Python 编码规范............................................................................... ...

最新文章

  1. JUC.Condition学习笔记[附详细源码解析]
  2. A little something to get you started
  3. Java并发编程--理解ThreadLocal
  4. 理一理字节对齐的那些事
  5. java多因子认证,Milvus 实战|生物多因子认证系列 (二):人脸识别
  6. Python----倚楼听风雨
  7. Linux中对两文件处理
  8. hadoop误删除文件
  9. shipyard中文版发布
  10. DockLayout布局
  11. 强烈推荐12套开源微信小程序免费源码
  12. 有道词典生词本到excel的装换
  13. 去掉 新版GeForce Experience 桌面录制视频时的 右上角图标
  14. 被问到项目亮点、难点、遇到的问题、解决思路
  15. 海康威视监控插件使用步骤
  16. 四川师范大学计算机系黄宇,黄宇-经济信息工程学院
  17. aac音频怎么转mp3,这几个方法很简便
  18. SEO网站优化步骤和技巧小结
  19. 专升本培训机构如何用自媒体做品牌推广
  20. Apache 的 X-sendfile

热门文章

  1. 研究综述 | 多关系知识图谱表示学习综述
  2. 章乐焱 | 用“科技”监管“科技”,知识图谱能做什么?
  3. AINLP-Archive:AINLP文章存档计划
  4. 工业大数据全景解读和应用案例
  5. 论文学习2-Incorporating Graph Attention Mechanism into Knowledge Graph Reasoning Based on Deep Reinforce
  6. 2022年中国AI芯片行业深度研究
  7. 小程序基础能力~网络
  8. c# 常用数据库封装
  9. Oracle 直方图理论
  10. 坑爹的uint32_t