日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python 编码风格指南

發(fā)布時間:2025/3/20 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 编码风格指南 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

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

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

簡介

本文檔給出的Python編碼約定,適用于由Python主發(fā)行版本中的標(biāo)準(zhǔn)庫構(gòu)成的代碼。有關(guān)Python的C實現(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é)(其實可能永遠(yuǎn)不會完結(jié))。

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

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

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

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

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

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

代碼布局

1. 縮進(jìn)

每級縮進(jìn)采用4個空格。
為了對付那些確實陳舊的代碼,又不愿做出清理,那么可以繼續(xù)沿用8個空格長度的制表符。

2. 制表符還是空格

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

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

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

3. 最大行長

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

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

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

''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:857662006 尋找有志同道合的小伙伴, 互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! '''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' oremphasis is None):raise ValueError("I don't think so -- values are %s, %s" %(width, height))Blob.__init__(self, width, height,color, emphasis, highlight)

4. 空行

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

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

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

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

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

5. 導(dǎo)入

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

import os import sys

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

import sys, os

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

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)入語句之間請加入1個空行。

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

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

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

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

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

import myclass import foo.bar.yourclass

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

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

討厭之事——以下場合應(yīng)避免使用多余的空白符。
緊靠小括號、中括號或大括號內(nèi)部。
正確:

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

緊挨著函數(shù)參數(shù)列表的左括號之前。
正確:

spam(1)

錯誤:

spam (1)

緊挨著索引或切片操作的左括號之前。
正確:

dict['key'] = list[index]

錯誤:

dict ['key'] = list [index]

為了與另一條賦值或其他語句對齊,在運算符兩邊使用多個空格。
正確:

x = 1 y = 2 long_variable = 3

錯誤:

x = 1 y = 2 long_variable = 3

7. 其他建議

始終在以下二元操作符兩側(cè)各放1個空格:賦值(=)、增量賦值(+=,-=等)、比較(==、<、>、!=、<>、<=、>=、in、not、in、is、is not)、布爾(and、or、not)。
在數(shù)學(xué)運算符兩側(cè)放置空格。
正確:

''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:857662006 尋找有志同道合的小伙伴, 互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! '''i = i + 1 submitted += 1x = x * 21 hypot2 = x * x + y * y c = (a + b) * (a - b)

錯誤:

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

在用于指定關(guān)鍵字參數(shù)或默認(rèn)參數(shù)值時,請勿在=兩邊使用空格。
正確:

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

錯誤:

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

通常不鼓勵使用復(fù)合語句,也就是在同一行放置多條語句。
正確:

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

最好不要:

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

雖然有時候?qū)⑿K代碼和if/for/while放在同一行沒什么問題,但多行語句絕對不能如此。同時還要避免過長代碼行的折疊!
最好不要:

if foo == 'blah': do_blah_thing() for x in lst: total += xwhile 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() 與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的Python 编码风格指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。