Python 编码规范(Google) (一)

简介: Python 编码规范(Google) (一)

前言


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 and
         color == '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 foo
     for (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, y
     x, y = y, x
No:  if x == 4 :
         print x , y
     x , 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,
         }


相关文章
|
机器学习/深度学习 存储 数据挖掘
Google Colab:云端的Python编程神器
Google Colab,全名Google Colaboratory,是Google Research团队开发的一款云端编程工具,它允许任何人通过浏览器编写和执行Python代码。Colab尤其适合机器学习、数据分析和教育目的。它是一种托管式Jupyter笔记本服务,用户无需设置,就可以直接使用,同时还能获得GPU等计算资源的免费使用权限。
533 0
Google Colab:云端的Python编程神器
|
6月前
|
Python
Python Google风格注释详解
Google风格注释是Python代码注释的一种标准化格式,它提供了一种规范的注释格式,使得代码更加易读、易于维护。Google风格注释使用三个双引号来包围注释内容,并按照一定规范编写。在注释中使用动词短语来描述函数的行为,并使用被动语态。在注释中使用正确的标点符号和缩进,使得注释易于阅读和理解。通过使用Google风格注释,我们可以为代码提供清晰的文档和说明,使得代码更加易读、易于维护。
232 3
|
7月前
|
程序员 Python
【🔥热闻速递】Google 裁撤 Python研发团队
Google近日决定解散其Python研发团队,原因是寻求更低劳动力成本,可能转向其他国家招聘。此举可能源于美国程序员薪资高昂,相比之下,中国工程师薪资更低且效率更高。谷歌CEO Sundar Pichai已将部分团队迁移至印度。这一决策引发对公司长期可持续性和人才保留问题的讨论,暗示谷歌正面临挑战。
98 5
|
7月前
|
API 算法框架/工具 异构计算
Python中Keras微调Google Gemma:定制化指令增强大语言模型LLM
Python中Keras微调Google Gemma:定制化指令增强大语言模型LLM
|
数据采集 JavaScript 搜索推荐
对于Python抓取Google搜索结果的一些了解
对于Python抓取Google搜索结果的一些了解
|
XML 存储 算法
Python|Google Python样式指南(3)
Python|Google Python样式指南(3)
79 0
|
设计模式 自然语言处理 程序员
Python|Google Python样式指南(2)
Python|Google Python样式指南(2)
92 0
|
编译器 开发工具 Python
Python|Google Python样式指南
Python|Google Python样式指南
87 0
|
机器学习/深度学习 数据采集 人工智能
好饭不怕晚,Google基于人工智能AI大语言对话模型Bard测试和API调用(Python3.10)
谷歌(Google)作为开源过著名深度学习框架Tensorflow的超级大厂,是人工智能领域一股不可忽视的中坚力量,旗下新产品Bard已经公布测试了一段时间,毁誉参半,很多人把Google的Bard和OpenAI的ChatGPT进行对比,Google Bard在ChatGPT面前似乎有些技不如人。 事实上,Google Bard并非对标ChatGPT的产品,Bard是基于LaMDA模型对话而进行构建的,Bard旨在构建一个对话式的AI系统,使其能够更好地理解人类语言,并且具备进行多轮对话的能力。而GPT的目标是生成自然语言文本。
好饭不怕晚,Google基于人工智能AI大语言对话模型Bard测试和API调用(Python3.10)
|
算法 双11 Python
6.18专属特惠活动:Google Earth Engine专栏、GEE教程训练专栏、GEE-python专栏和GEE案例分析专栏等限时特价
6.18专属特惠活动:Google Earth Engine专栏、GEE教程训练专栏、GEE-python专栏和GEE案例分析专栏等限时特价
126 0
6.18专属特惠活动:Google Earth Engine专栏、GEE教程训练专栏、GEE-python专栏和GEE案例分析专栏等限时特价
下一篇
DataWorks