欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python編碼風(fēng)格指南

系統(tǒng) 1859 0

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

訪問Python官方網(wǎng)站的文檔部分并搜索PEP,就可以獲得PEP 8全文及Python歷史上發(fā)布的所有其他PEP。PEP既是Python歷史和經(jīng)驗(yàn)的絕佳來源,也是當(dāng)前議題和將來計(jì)劃的解釋。

A.3.1 簡介

本文檔給出的Python編碼約定,適用于由Python主發(fā)行版本中的標(biāo)準(zhǔn)庫構(gòu)成的代碼。有關(guān)Python的C實(shí)現(xiàn)中的C代碼風(fēng)格指南,參見相應(yīng)的PEP。本文檔改編自Guido最初的Python風(fēng)格指南文章,并加入了Barry風(fēng)格指南的一些內(nèi)容。如果與Guido的風(fēng)格規(guī)則存在沖突,應(yīng)該遵從本PEP。本PEP可能尚未完結(jié)(其實(shí)可能永遠(yuǎn)不會(huì)完結(jié))。

盲目的一致性是頭腦簡單的表現(xiàn)

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

風(fēng)格指南是討論一致性的。與風(fēng)格指南保持一致很重要。維持同一個(gè)項(xiàng)目內(nèi)部的一致性更加重要。而保證同一個(gè)模塊和函數(shù)內(nèi)部的一致性則最重要。

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

以下是兩個(gè)打破規(guī)范的好理由。

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

A.3.2 代碼布局

1.縮進(jìn)

每級(jí)縮進(jìn)采用4個(gè)空格。

為了對(duì)付那些確實(shí)陳舊的代碼,又不愿做出清理,那么可以繼續(xù)沿用8個(gè)空格長度的制表符。

2.制表符還是空格

絕對(duì)禁止制表符和空格的混用。

最流行的Python縮進(jìn)方式是只使用空格。第二流行的方式是只使用制表符。混合使用制表符和空格進(jìn)行縮進(jìn)的代碼,應(yīng)該轉(zhuǎn)換為只使用空格的方式。如果調(diào)用Python命令行解釋器時(shí)帶上 -t 參數(shù),它就會(huì)對(duì)非法混用制表符和空格的代碼發(fā)出警告。如果用了 -tt 參數(shù),這些警告就會(huì)上升為錯(cuò)誤。強(qiáng)烈推薦使用這些參數(shù)!

對(duì)全新的項(xiàng)目而言,強(qiáng)烈建議只用空格縮進(jìn),換掉所有的制表符。大部分編輯器都具備將制表符替換為空格的便捷功能。

3.最大行長

所有行都應(yīng)限制在79個(gè)字符以內(nèi)。

將行長限制在80個(gè)字符的設(shè)備還有很多,而且將窗口限制為80個(gè)字符寬就可以并排放置多個(gè)窗口。這些設(shè)備上的默認(rèn)換行會(huì)破壞代碼的外觀,增加理解的難度。因此,請(qǐng)將所有行都限制在79個(gè)字符以內(nèi)。對(duì)于連續(xù)的大段文字(文檔字符串或注釋),建議將行長限制在72個(gè)字符以內(nèi)。

對(duì)長行進(jìn)行換行的首選方案,是利用Python隱含的行連接特性,在圓括號(hào)、方括號(hào)和大括號(hào)內(nèi)部進(jìn)行斷行。必要時(shí)可以在表達(dá)式外面多加一對(duì)圓括號(hào),不過有時(shí)候用反斜杠會(huì)更好看些。請(qǐng)確保對(duì)后續(xù)行進(jìn)行適當(dāng)?shù)目s進(jìn)。打斷二元運(yùn)算符的首選位置是在運(yùn)算符之后,而不是運(yùn)算符之前。下面給出一些例子:

            ?
          
  1. class Rectangle(Blob):
  2. def __init__(self, width, height,
  3. color='black', emphasis=None, highlight=0):
  4. if (width == 0 and height == 0 and\
  5. color == 'red' and emphasis == 'strong' or \
  6. highlight > 100):
  7. raise ValueError("sorry, you lose")
  8. if width == 0 and height == 0 and (color == 'red' or
  9. emphasis is None):
  10. raise ValueError("I don't think so -- values are %s, %s" %
  11. (width, height))
  12. Blob.__init__(self, width, height,
  13. color, emphasis, highlight)

4.空行

頂級(jí)函數(shù)和類定義之間,請(qǐng)用兩個(gè)空行分隔。

類內(nèi)部的各個(gè)方法定義之間,請(qǐng)用1個(gè)空行分隔。

為了讓有關(guān)聯(lián)的函數(shù)成組,可以在各函數(shù)組之間有節(jié)制地添加空行。相互關(guān)聯(lián)的一組單行函數(shù)之間,可以省略空行,如一組函數(shù)的偽實(shí)現(xiàn)(dummy implementation)。

函數(shù)內(nèi)部可以有節(jié)制地用空行來區(qū)分出各個(gè)邏輯部分。

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

5.導(dǎo)入

導(dǎo)入語句通常應(yīng)單獨(dú)成行,例如:

            ?
          
  1. import os
  2. import sys

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

            ?
          
  1. import sys, os

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

            ?
          
  1. from subprocess import Popen, PIPE

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

導(dǎo)入語句應(yīng)按照以下順序進(jìn)行分組。

(1)標(biāo)準(zhǔn)庫的導(dǎo)入。

(2)相關(guān)第三方庫的導(dǎo)入。

(3)本地應(yīng)用程序/庫——特定庫的導(dǎo)入。

每組導(dǎo)入語句之間請(qǐng)加入1個(gè)空行。

任何對(duì)應(yīng)的 __all__ 聲明都應(yīng)位于導(dǎo)入語句之后。

非常不推薦對(duì)內(nèi)部包的導(dǎo)入使用相對(duì)導(dǎo)入語法。請(qǐng)始終對(duì)所有導(dǎo)入都使用絕對(duì)包路徑。即便Python 2.5現(xiàn)在已完全實(shí)現(xiàn)了PEP 328[3],它的顯式相對(duì)導(dǎo)入語法也是強(qiáng)烈不推薦的。絕對(duì)導(dǎo)入的可移植性更好,通常可讀性也會(huì)更好。

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

            ?
          
  1. from myclass import MyClass
  2. from foo.bar.yourclass import YourClass

如果上述寫法會(huì)導(dǎo)致本地命名沖突,就采用如下寫法:

            ?
          
  1. import myclass
  2. import foo.bar.yourclass

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

6.表達(dá)式和語句內(nèi)的空白符

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

  • 緊靠小括號(hào)、中括號(hào)或大括號(hào)內(nèi)部。?

    正確:
                    ?
                  
    1. spam(ham[1], {eggs: 2})
    錯(cuò)誤:
                    ?
                  
    1. spam( ham[ 1 ], { eggs: 2 } )
  • 緊挨著逗號(hào)、分號(hào)或冒號(hào)之前。?

    正確:
                    ?
                  
    1. if x == 4: print x, y; x, y = y, x
    錯(cuò)誤:
                    ?
                  
    1. if x == 4 : print x , y ; x , y = y , x
  • 緊挨著函數(shù)參數(shù)列表的左括號(hào)之前。

    正確:
                    ?
                  
    1. spam(1)
    錯(cuò)誤:
                    ?
                  
    1. spam (1)
  • 緊挨著索引或切片操作的左括號(hào)之前。

    正確:
                    ?
                  
    1. dict['key'] = list[index]
    錯(cuò)誤:
                    ?
                  
    1. dict ['key'] = list [index]
  • 為了與另一條賦值或其他語句對(duì)齊,在運(yùn)算符兩邊使用多個(gè)空格。

    正確:
                    ?
                  
    1. x = 1
    2. y = 2
    3. long_variable = 3
    錯(cuò)誤:
                    ?
                  
    1. x = 1
    2. y = 2
    3. long_variable = 3

7.其他建議

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

  • 在數(shù)學(xué)運(yùn)算符兩側(cè)放置空格。?

    正確:
                    ?
                  
    1. i = i + 1
    2. submitted += 1
    3. x = x * 2 – 1
    4. hypot2 = x * x + y * y
    5. c = (a + b) * (a - b)
    錯(cuò)誤:
                    ?
                  
    1. i=i+1
    2. submitted +=1
    3. x = x*2 – 1
    4. hypot2 = x*x + y*y
    5. c = (a+b) * (a-b)
  • 在用于指定關(guān)鍵字參數(shù)或默認(rèn)參數(shù)值時(shí),請(qǐng)勿在 = 兩邊使用空格。

    正確:
                    ?
                  
    1. def complex(real, imag=0.0):
    2. return magic(r=real, i=imag)
    錯(cuò)誤:
                    ?
                  
    1. def complex(real, imag = 0.0):
    2. return magic(r = real, i = imag)
  • 通常不鼓勵(lì)使用復(fù)合語句,也就是在同一行放置多條語句。

    正確:
                    ?
                  
    1. if foo == 'blah':
    2. do_blah_thing()
    3. do_one()
    4. do_two()
    5. do_three()
    最好不要:
                    ?
                  
    1. if foo == 'blah': do_blah_thing()
    2. do_one(); do_two(); do_three()
  • 雖然有時(shí)候?qū)⑿K代碼和 if/for/while 放在同一行沒什么問題,但多行語句絕對(duì)不能如此。同時(shí)還要避免過長代碼行的折疊!

    最好不要:
                    ?
                  
    1. if foo == 'blah': do_blah_thing()
    2. for x in lst: total += x
    3. while t < 10: t = delay()
    絕對(duì)不要:
                    ?
                  
    1. if foo == 'blah': do_blah_thing()
    2. else: do_non_blah_thing()
    3. try: something()
    4. finally: cleanup()
    5. do_one(); do_two(); do_three(long, argument,
    6. list, like, this)
    7. if foo == 'blah': one(); two(); three()

本文截選自最新上架的《Python 快速入門》第3版

《Python 快速入門》第3版

Python編碼風(fēng)格指南_第1張圖片

本書是Python專業(yè)人士Naomi Ceder編寫的Python語言的綜合指南。她是一位經(jīng)驗(yàn)豐富的教學(xué)者,她既能讓讀者關(guān)注語言的細(xì)節(jié),又能使其具備解決實(shí)際問題的能力。本書中配有大量貼切的示例和邊做邊學(xué)的習(xí)題,有助于讀者掌握每一個(gè)重要概念。無論讀者是要抓取網(wǎng)站內(nèi)容還是想玩轉(zhuǎn)嵌套元組,都會(huì)贊嘆本書的清晰、專注和對(duì)細(xì)節(jié)的重視。

本書主要內(nèi)容

● 明確涵蓋Python 3。

● 全面介紹核心庫、包和工具。

● 配備精深的習(xí)題。

● 新增5章與數(shù)據(jù)科學(xué)相關(guān)的內(nèi)容。

本書專為熟悉編程概念的讀者編寫,但不要求讀者具備Python的使用經(jīng)驗(yàn)。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 人人澡人人爱 | 日本阿v无码观看dvd | 天堂资源地址在线 | 午夜在线免费观看 | 午夜天堂精品久久久久 | 日韩黄色大全 | 欧美成在线视频 | 国产日| 午夜国产亚洲精品一区 | 在线观看www | 亚洲www啪成人一区二区 | 激情综合网俺也去 | 国产精品无码2021在线观看 | 国产在线观看午夜不卡 | 大片在线免费观看 | 国产高清精品在线 | 成人精品视频 | 日韩伦理一区二区三区 | 日日舔夜夜摸 | 国产美女福利视频福利 | 日本毛片高清免费视频 | 91啦视频在线观看 | 欧美精品国产制服第一页 | 久综合| 久久精品国产999大香线焦 | 成人小视频在线观看 | 91av导航| 精品一区二区久久久久久久网站 | 999精品免费视频 | 精品成人佐山爱一区二区 | 97色伦网| 无码国产精品成人午夜视频 | 国产123| 可以直接看的毛片 | 久久这里只有精品免费播放 | 精品久久久久久亚洲综合网 | 精品无人区一区二区三 | 羞羞av在线| 在线二区人妖系列 | 日韩不卡一区二区 | 一级黄色毛片子 |