2012-06-28 30 views
1

當試圖遵守PEP8時,有時很難保持在80個字符的限制內。例如:多條控制語句並在python中保持80個字符行

for i in range(10): 
    for k in range(10): 
     if k < 5: 
      try: 
       with line as open(file): 
        if line.blah in text: 
         dosomethingwithnospaceleft(bla, 
                bla, 
                ) 

我的觀點是,80個字符的限制有時會有點可笑而且在某些方面難以閱讀。這種格式背後的推理是什麼?對於大多數使用不使用20歲以上編輯的人來說,這不是一個過時的標準嗎?

+1

的限制實際上是79 :) –

+0

我同意,我忽略了我的編碼線路長度限制。如果你不喜歡它,就不要遵守它。 – BrenBarn

回答

6

限制線的長度是好的,因爲它通常使文本更具可讀性。此外,縮進如此多的級別通常意味着您應該將某些因素排除在不同的功能之外。

您可能還想提前繼續,爲您節省縮進級別(if k >= 5: continueif line.blah not in text: continue)。

+0

這是一個突破功能的好主意,但總的來說,所有的課程 - > def-> for-> for-> if->你會失去至少24個字符。然後,對於具有長名稱或列表解析的函數和字符串,您正在使用非常有限的空間。我給出的例子很簡單,但這對於使用繼續保存縮進來說是一個很酷的技巧。 – user1487793

+2

+1:縮進太多?重構代碼! – astynax

0

PEP-008

最大行長度

限制所有行到最大的79個字符。

周圍還有很多設備限於80個字符 行;另外,將窗口限制爲80個字符可以使 具有多個窗口並排。在這樣的設備上的默認包裝破壞了代碼的可視化結構,使得它更難以理解。因此,請將所有行限制爲 最多79個字符。對於流動長文本塊(文檔字符 或註釋),建議將長度限制爲72個字符。

包裝長行的首選方式是在括號,括號和大括號內使用Python隱含的 行延續。通過在 括號中包裝表達式,長行 可以分成多行。這些應優先使用反斜槓 用於續行。確保適當地縮進續行 。破解二元運算符 的首選位置在運算符之後,而不是在它之前。一些例子:

class Rectangle(Blob): 

    def __init__(self, width, height, 
       color='black', emphasis=None, highlight=0): 
     if (width == 0 and height == 0 and 
      color == 'red' and emphasis == 'strong' or 
      highlight > 100): 
      raise ValueError("sorry, you lose") 
     if width == 0 and height == 0 and (color == 'red' or 
              emphasis is None): 
      raise ValueError("I don't think so -- values are %s, %s" % 
          (width, height)) 
     Blob.__init__(self, width, height, 
         color, emphasis, highlight) 
+0

有多少人真的在使用這些限制性編輯器? – user1487793

相關問題