當前位置:
首頁 > 最新 > 淺談Python之PEP8編碼風格

淺談Python之PEP8編碼風格

相信有不少同學都知道,當我們在使用IDE寫一段程序的時候,如果我們的語法有錯誤,那麼IDE就會相應的畫出紅線

(這裡我們少了一個:)

那麼是不是當我們的代碼中沒有紅色的下劃線,就代表沒有任何錯誤呢?

emmm,其實在某種程度上可以這樣說

當我們的代碼沒有紅色下劃線的時候,確實可以準確的運行起來

BUT

你覺得這樣帶著灰色下劃線的代碼好看嗎?

最為一個強迫症患者,這根本不能忍啊!

這就是PyCharm中最著名的PEP8代碼規範

下面我們就來看一下如何寫出,不帶下劃線的優雅代碼


縮進(indentation)

使用四個空格表示每個縮進級別。

規範操作:

# 使用開分隔符(opening delimiter)進行對齊

foo = long_func_name(var_one, var_two, var_three, var_four)

# 使用更多的縮進以和其他的代碼單元區別開來# 如下例的,參數部分比函數體多四個縮進以和函數體進行區別def long_func_name( var_one, var_two, var_three, var_four) print(var_one)

# 懸掛縮進(hanging indents):增加一個縮進級別

foo = long_func_name( var_one, var_two, var_three, var_four)

# 或者:

foo = long_func_name( var_one, var_two, var_three, var_four)a = [1,2,3,4,5,6]a = [1,2,3,4,5,6]

不規範操作:

# 當不適用垂直對齊時,禁止在第一行使用參數# 換句話說,在垂直對齊時,才可在第一行使用參數foo = lone_func_name(var_one, var_two, var_three, var_four)

# 當縮進不足以區分代碼結構時,增加一個縮進級別

deflong_func_name( var_one, var_two, var_three var_four):print(var_one)


最大行長度

所有行的最大長度均為79個字元。

withopen("")asfile_1,

open("")asfile_2: file_2.write(file_1.read())

使用正確的換行位置。推薦的位置在二元操作符(binary operator,如下述代碼中的、以及)之後,而不是在它們之前:

classRectangle(Shape):

def__init__(self,width,height,

color="black",emphasis=None,highlight=):

if(width ==andheight ==and

color =="red"andemphasis =="strong"or

height >100):

raiseValueError("sorry, you lose")

ifwidth ==andheight ==and(color =="red"oremphasisis None):

raiseValueError("I don"t think so -- values are %s, %s"%

(width,height))

Shape.__init__(self,width,height,color,

emphasis,highlight)


空行

頂級函數(當前文件中的第一個函數)或者頂級類(當前文件的第一個類)之前要有兩個空行

定義在類內部的函數(成員函數)之間要留有一個空行

可以使用額外的空行(但要注意節制)以區分不同的函數組,

在一堆只有一行的函數之間不要使用空行(比如一些函數的空實現)

在函數內部使用空行,來標識不同的邏輯單元


imports

在獨立的行中導入不同的包

規範操作:

不規範操作:

import sys,os

但從一個包中添加不同的模塊或者函數也是允許的:

fromsubprocessimportPopen, PIPE

import文件應當總是位於文件的首部,僅在模塊備註和文檔之後,在模塊的全局變數和常量之前的位置

import文件的順序:

1. 標準庫(如sys、os)

2. 相關的第三方的庫(如numpy、pandas、matplotlib)

3. 自定義的.py文件或者自定義的庫

以組的形式標識上述三種import文件,也即是用一個空行隔開

推薦使用絕對路徑包含,因為可讀性更好,並且不易出錯。

importmypkg.sibling

frommypkgimportsiblingfrommypkg.siblingimportexample

然而,外部的相對包含也是一種可接受的替換,尤其是處理複雜的包層次時,也即是絕對包含將造成不必要的繁瑣。

from.importsibling

from.siblingimportexample# .表示當前路徑

標準庫不存在複雜的包層次關係,應當總是使用其絕對導入路徑。

應當避免通配符導入文件


字元串

在python中,不對單引號和雙引號作區分,PEP的代碼規範也不對此有所推薦。任選其一,統一使用即可。然而,當一個字元串包含單引號或者雙引號時,使用另外一種方式避免轉義符()的使用,以提高可讀性。

更多的規範可以查看PEP8的官方文檔

https://www.python.org/dev/peps/pep-0008/#fn-hi

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

R開發人員使用Python
偽·從零開始學Python-1.2 Python的開發工具

TAG:Python |