佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 基于Google的Python編碼規(guī)范標(biāo)準(zhǔn)

基于Google的Python編碼規(guī)范標(biāo)準(zhǔn)

熱門標(biāo)簽:美圖手機(jī) 智能手機(jī) 網(wǎng)站文章發(fā)布 檢查注冊(cè)表項(xiàng) 呼叫中心市場(chǎng)需求 銀行業(yè)務(wù) 服務(wù)器配置 鐵路電話系統(tǒng)

Python 風(fēng)格規(guī)范(Google)

本項(xiàng)目并非 Google 官方項(xiàng)目, 而是由國(guó)內(nèi)程序員憑熱情創(chuàng)建和維護(hù)。

如果你關(guān)注的是 Google 官方英文版, 請(qǐng)移步 Google Style Guide

以下代碼中 Yes 表示推薦,No 表示不推薦。

分號(hào)

不要在行尾加分號(hào), 也不要用分號(hào)將兩條命令放在同一行。

行長(zhǎng)度

每行不超過(guò)80個(gè)字符

以下情況除外:

  • 長(zhǎng)的導(dǎo)入模塊語(yǔ)句注釋里的URL
  • 不要使用反斜杠連接行。

Python會(huì)將 圓括號(hào), 中括號(hào)和花括號(hào)中的行隱式的連接起來(lái) , 你可以利用這個(gè)特點(diǎn).

如果需要, 你可以在表達(dá)式外圍增加一對(duì)額外的圓括號(hào)。

推薦: 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'):

如果一個(gè)文本字符串在一行放不下, 可以使用圓括號(hào)來(lái)實(shí)現(xiàn)隱式行連接:

x = ('這是一個(gè)非常長(zhǎng)非常長(zhǎng)非常長(zhǎng)非常長(zhǎng) '
     '非常長(zhǎng)非常長(zhǎng)非常長(zhǎng)非常長(zhǎng)非常長(zhǎng)非常長(zhǎng)的字符串')

在注釋中,如果必要,將長(zhǎng)的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

注意上面例子中的元素縮進(jìn); 你可以在本文的 :ref:`縮進(jìn) indentation>`部分找到解釋.

括號(hào)

寧缺毋濫的使用括號(hào)

除非是用于實(shí)現(xiàn)行連接, 否則不要在返回語(yǔ)句或條件語(yǔ)句中使用括號(hào).

不過(guò)在元組兩邊使用括號(hào)是可以的.

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)

縮進(jìn)

用4個(gè)空格來(lái)縮進(jìn)代碼

絕對(duì)不要用tab, 也不要tab和空格混用.

對(duì)于行連接的情況, 你應(yīng)該要么垂直對(duì)齊換行的元素(見 :ref:`行長(zhǎng)度 line_length>` 部分的示例),

或者使用4空格的懸掛式縮進(jìn)(這時(shí)第一行不應(yīng)該有參數(shù)):

Yes:   # 與起始變量對(duì)齊
       foo = long_function_name(var_one, var_two,
                                var_three, var_four)
        # 字典中與起始值對(duì)齊
       foo = {
           long_dictionary_key: value1 +
                                value2,
          ...
       }
        # 4 個(gè)空格縮進(jìn),第一行不需要
       foo = long_function_name(
           var_one, var_two, var_three,
           var_four)
 
       # 字典中 4 個(gè)空格縮進(jìn)
       foo = {
           long_dictionary_key:
               long_dictionary_value,
           ...
       }
No:    # 第一行有空格是禁止的
      foo = long_function_name(var_one, var_two,
          var_three, var_four) 
      # 2 個(gè)空格是禁止的
      foo = long_function_name(
        var_one, var_two, var_three,
        var_four) 
      # 字典中沒有處理縮進(jìn)
      foo = {
          long_dictionary_key:
              long_dictionary_value,
              ...
      }

空行

頂級(jí)定義之間空兩行, 方法定義之間空一行

頂級(jí)定義之間空兩行, 比如函數(shù)或者類定義. 方法定義, 類定義與第一個(gè)方法之間, 都應(yīng)該空一行.

函數(shù)或方法中, 某些地方要是你覺得合適, 就空一行.

空格

按照標(biāo)準(zhǔn)的排版規(guī)范來(lái)使用標(biāo)點(diǎn)兩邊的空格

括號(hào)內(nèi)不要有空格.

按照標(biāo)準(zhǔn)的排版規(guī)范來(lái)使用標(biāo)點(diǎn)兩邊的空格

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

不要在逗號(hào), 分號(hào), 冒號(hào)前面加空格, 但應(yīng)該在它們后面加(除了在行尾).

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

參數(shù)列表, 索引或切片的左括號(hào)前不應(yīng)加空格.

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

在二元操作符兩邊都加上一個(gè)空格,

比如賦值(=), 比較(==, , >, !=, >, =, >=, in, not in, is, is not), 布爾(and, or, not).

至于算術(shù)操作符兩邊的空格該如何使用, 需要你自己好好判斷. 不

過(guò)兩側(cè)務(wù)必要保持一致.

Yes: x == 1
No:  x1

當(dāng)'='用于指示關(guān)鍵字參數(shù)或默認(rèn)參數(shù)值時(shí), 不要在其兩側(cè)使用空格.

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)

不要用空格來(lái)垂直對(duì)齊多行間的標(biāo)記, 因?yàn)檫@會(huì)成為維護(hù)的負(fù)擔(dān)(適用于:, #, =等):

Yes:
     foo = 1000  # 注釋
     long_name = 2  # 注釋不需要對(duì)齊
     dictionary = {
         "foo": 1,
         "long_name": 2,
         }
No:
     foo       = 1000  # 注釋
     long_name = 2     # 注釋不需要對(duì)齊
     dictionary = {
         "foo"      : 1,
         "long_name": 2,
         }

以上就是基于Google的Python編碼規(guī)范標(biāo)準(zhǔn)的詳細(xì)內(nèi)容,更多關(guān)于Google的Python編碼規(guī)范的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python編碼總結(jié)(編碼類型、格式、轉(zhuǎn)碼)
  • Python編碼類型轉(zhuǎn)換方法詳解
  • Python編碼爬坑指南(必看)
  • python編碼最佳實(shí)踐之總結(jié)
  • Python編碼時(shí)應(yīng)該注意的幾個(gè)情況
  • 學(xué)習(xí)python處理python編碼問(wèn)題
  • python入門課程第二講之編碼規(guī)范知多少

標(biāo)簽:上海 滄州 新疆 河南 沈陽(yáng) 紅河 樂(lè)山 長(zhǎng)治

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于Google的Python編碼規(guī)范標(biāo)準(zhǔn)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    阳城县| 鹤壁市| 西和县| 河北省| 九台市| 庆云县| 宁国市| 丰县| 瑞昌市| 新平| 子长县| 阳东县| 鄂托克旗| 凤山县| 建德市| 积石山| 庄河市| 庆云县| 阳春市| 长沙市| 潼南县| 麻栗坡县| 乐东| 繁峙县| 宝应县| 阜新市| 临城县| 广灵县| 出国| 海丰县| 肥城市| 高平市| 玛曲县| 绿春县| 宜城市| 富锦市| 修武县| 鄯善县| 额尔古纳市| 冕宁县| 陇南市|