日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本節收錄了稍作剪輯的PEP 8摘要(Python Enhancement Proposal,Python增強提案)。PEP 8由Guido van Rossum和Barry Warsaw撰寫,是Python的最接近編程風格手冊的東西。這里省略了一些比較具體的部分,但主要內容都已包括。應該盡可能讓代碼遵守PEP 8規范,代碼會由此更具Python風格。

訪問Python官方網站的文檔部分并搜索PEP,就可以獲得PEP 8全文及Python歷史上發布的所有其他PEP。PEP既是Python歷史和經驗的絕佳來源,也是當前議題和將來計劃的解釋。

A.3.1 簡介

本文檔給出的Python編碼約定,適用于由Python主發行版本中的標準庫構成的代碼。有關Python的C實現中的C代碼風格指南,參見相應的PEP。本文檔改編自Guido最初的Python風格指南文章,并加入了Barry風格指南的一些內容。如果與Guido的風格規則存在沖突,應該遵從本PEP。本PEP可能尚未完結(其實可能永遠不會完結)。

盲目的一致性是頭腦簡單的表現

Guido的一個重要觀點是,代碼被閱讀的次數遠多于被編寫的次數。本指南旨在提高代碼的可讀性,使各種各樣的Python代碼能保持風格一致。正如PEP 20所述,“Readability counts”(注重可讀性)。

風格指南是討論一致性的。與風格指南保持一致很重要。維持同一個項目內部的一致性更加重要。而保證同一個模塊和函數內部的一致性則最重要。

然而最最重要的是,知道何時應打破一致性,有時風格指南并不適用。如果心存疑慮,請采用自己的最佳判斷。請看看別人的例子并做出最佳決定。不要猶豫,盡管發出疑問。

以下是兩個打破規范的好理由。

  • 如果應用風格指南會讓代碼的可讀性變差,甚至對于習慣閱讀遵守本規范代碼的人來說也是如此。
  • 需要與周邊的代碼保持一致,而這些代碼并未遵守規范(可能是歷史原因造成的),盡管這也可能是個收拾別人爛攤子的機會(真正的極限編程風格)。

A.3.2 代碼布局

1.縮進

每級縮進采用4個空格。

為了對付那些確實陳舊的代碼,又不愿做出清理,那么可以繼續沿用8個空格長度的制表符。

2.制表符還是空格

絕對禁止制表符和空格的混用。

最流行的Python縮進方式是只使用空格。第二流行的方式是只使用制表符。混合使用制表符和空格進行縮進的代碼,應該轉換為只使用空格的方式。如果調用Python命令行解釋器時帶上-t參數,它就會對非法混用制表符和空格的代碼發出警告。如果用了-tt參數,這些警告就會上升為錯誤。強烈推薦使用這些參數!

對全新的項目而言,強烈建議只用空格縮進,換掉所有的制表符。大部分編輯器都具備將制表符替換為空格的便捷功能。

3.最大行長

所有行都應限制在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)

4.空行

頂級函數和類定義之間,請用兩個空行分隔。

類內部的各個方法定義之間,請用1個空行分隔。

為了讓有關聯的函數成組,可以在各函數組之間有節制地添加空行。相互關聯的一組單行函數之間,可以省略空行,如一組函數的偽實現(dummy implementation)。

函數內部可以有節制地用空行來區分出各個邏輯部分。

Python可將Ctrl+L(^L)換頁符接受為空白符。很多工具都將其視為分頁符,所以可以利用其進行分頁,使得文件中的關聯部分單獨成頁。

5.導入

導入語句通常應單獨成行,例如:

import os
import sys

不要像下面這樣寫在一起:

import sys, os

不過下面的寫法沒有問題:

from subprocess import Popen, PIPE

導入語句通常位于文件的頂部,緊挨著模塊注釋和文檔字符串后面,在模塊全局變量和常量定義之前。

導入語句應按照以下順序進行分組。

(1)標準庫的導入。

(2)相關第三方庫的導入。

(3)本地應用程序/庫——特定庫的導入。

每組導入語句之間請加入1個空行。

任何對應的__all__聲明都應位于導入語句之后。

非常不推薦對內部包的導入使用相對導入語法。請始終對所有導入都使用絕對包路徑。即便Python 2.5現在已完全實現了PEP 328[3],它的顯式相對導入語法也是強烈不推薦的。絕對導入的可移植性更好,通常可讀性也會更好。

{:—}如果是從包含類的模塊中導入類,通常可以采用如下寫法:

from myclass import MyClass
from foo.bar.yourclass import YourClass

如果上述寫法會導致本地命名沖突,就采用如下寫法:

import myclass
import foo.bar.yourclass

然后用myclass.MyClass和
foo.bar.yourclass.YourClass表示類。

6.表達式和語句內的空白符

討厭之事——以下場合應避免使用多余的空白符。

  • 緊靠小括號、中括號或大括號內部。 
    正確:spam(ham[1], {eggs: 2})錯誤:spam( ham[ 1 ], { eggs: 2 } )
  • 緊挨著逗號、分號或冒號之前。 
    正確:if x == 4: print x, y; x, y = y, x錯誤:if x == 4 : print x , y ; x , y = y , x
  • 緊挨著函數參數列表的左括號之前。
    正確:spam(1)錯誤:spam (1)
  • 緊挨著索引或切片操作的左括號之前。
    正確:dict['key'] = list[index]錯誤:dict ['key'] = list [index]
  • 為了與另一條賦值或其他語句對齊,在運算符兩邊使用多個空格。
    正確:x = 1y = 2long_variable = 3錯誤:x = 1y = 2long_variable = 3

7.其他建議

始終在以下二元操作符兩側各放1個空格:賦值(=)、增量賦值(+=,-=等)、比較(==、<、>、!=、<>、<=、>=、in、not、in、is、is not)、布爾(and、or、not)。

  • 在數學運算符兩側放置空格。

正確:

i = i + 1
submitted += 1
 
x = x * 2 – 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)

錯誤:

i=i+1
submitted +=1
x = x*2 – 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)
  • 在用于指定關鍵字參數或默認參數值時,請勿在=兩邊使用空格。

正確:

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

錯誤:

def complex(real, imag = 0.0):
 return magic(r = real, i = imag)
  • 通常不鼓勵使用復合語句,也就是在同一行放置多條語句。

正確:

if foo == 'blah':
 do_blah_thing()
do_one()
do_two()
do_three()

最好不要:

if foo == 'blah': do_blah_thing()
do_one(); do_two(); do_three()
  • 雖然有時候將小塊代碼和if/for/while放在同一行沒什么問題,但多行語句絕對不能如此。同時還要避免過長代碼行的折疊!

最好不要:

if foo == 'blah': do_blah_thing()
for x in lst: total += x 
while t < 10: t = delay()

絕對不要:

if foo == 'blah': do_blah_thing()
else: do_non_blah_thing()
try: something()
finally: cleanup()
do_one(); do_two(); do_three(long, argument, 
list, like, this)
if foo == 'blah': one(); two(); three()

本文節選自《Python 快速入門》第3版

分享到:
標簽:Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定