PEP8編碼規範
PEP8是什麼?
PEP是Python增強提案(Python Enhancement Proposal)的縮寫,大家通過社群、郵件列表等方式 ,來為Python建言獻策,官方最終會整理成標準文件,將一些規範在每個PEP的版本中體現。而PEP8就是第8個版本。 是Python對於程式碼的風格指南,給出了Python程式碼組成的編碼約定。我們每個人都會形成自己的編碼風格,但我們應儘量的參考此指南來編寫Python程式碼,致力於程式碼更加規範化。 至於所謂的語法、語法、語法.....灑家絞盡腦汁,只能反覆強調以下幾項。
縮排
Python是一門用空格縮排來區分程式碼層次的語言,其實Python並沒有強制要求你用Tab縮排或者用空格縮排,甚至空格按幾個都沒有強制要求。但
PyCharm
在縮排錯誤時,會有提示的(一般為飄紅)。 這裡需要的注意的是:這個四個空格,可以手動敲4下空格鍵(廢話!),也可以用鍵盤的Tab
鍵(別問在哪,Q
鍵左邊,Capslock
鍵上邊)。但是,千萬不要Tab和空格鍵混用,因為不同的編輯器對Tab
鍵的解釋是不同的,有的是預設4個空格,有的是8個。但空格永遠是一致的!Python中不提倡用Tab
來處理縮排,但一般編輯器的Tab
都是4個空格,我們也能設定嘛!反正要是讓灑家一直咔咔咔咔咔咔敲空格,還不如去搬磚(我擦,貌似暴露了什麼).... ps:如果要是想讓程式碼往右側縮排4個,就Tab
一次就行了;要是讓程式碼往左側縮排4個空格,就Shift + Tab
就完了。如果是整個程式碼塊,選中所有即可。
分號
不少有別的語言經驗的大佬來學習Python時。每當敲完一行程式碼後。姿態非常優美的敲個分號作為結束!比如:
print('hello world'); # ×
print('hello world') # √
Python不建議使用分號!除此之外,也不要用分號連線兩條語句:
x = 3;print('hello world')
為了Python程式碼更加優美、簡潔,請忘記分號吧!
符號
新手上路,你在行尾敲個分號Python也就認了。但是你來個中文的分號就不能忍了!所以,包括冒號、大於小於不等於、感嘆號、逗號、括號、引號等等請使用英文狀態下的符號。
註釋
在Python中註釋分為兩種方式:
-
單行註釋(
#
號表示):一般用來對一行程式碼或者幾行程式碼進行註釋 -
多行註釋(三對引號表示):一般用與對較多的程式碼行或程式碼塊進行註釋,或者對整個檔案進行描述,下圖演示了單行註釋和多行註釋在實際編寫程式碼中的示例。
別忘了,我們寫的程式碼是給誰看的?你可能會說是給計算機?CPU?是個鬼鬼!是給人看的!程式碼只要符合規範,直譯器都能屁顛屁顛交給CPU去執行。但是這個規範還不夠,因為你不寫註釋,Python直譯器就解釋不了了?該有的空格沒有就不行了? 我們要在一些重要的地方加上一些註釋,讓別人一眼就知道是幹啥用的。就像產品的說明書一樣。該有的不能少!
但也不能滿篇都是註釋!這就顯得low了。要顯得恰如其分,起到畫龍點睛的作用!給人一種一看就有一種:我x,大佬啊,這應該裱起來帖床頭,時時瞻仰啊!不能讓人家一看:我x,這是什麼?dogshit
!
引號
在Python中,單引號和雙引號都能用來表示一個字串,比如:
str1 = 'coolguy'
str2 = "coolguy"
在Python中,str1和str2是沒有區別的,但是在有些情況下,卻要注意的,例如你如何定義:I’m oldboy,這時候就要單雙引號搭配使用了,如:
str3 = "I'm coolguy"
這也是Python人性化的方面之一,至於複雜的用法,我們後面講字串的時候再說。
邏輯行與物理行
Python執行程式碼的順序是從上到下順序執行的,邏輯行,就是Python認識的單條語句,而物理行是我們認識的單條語句。當然你想在一個物理行上寫多個邏輯行,那麼你要用;
來標明這種用法。
x = 5;print(x)
但之前已經說過了,分號啥的還是忘記吧!Python希望我們每行都只寫一條語句,這樣使得程式碼更易讀。
x = 5
print(x)
那麼,你可能會說,這個一行萬一放不下怎麼辦?那就用到了行連線\
符號,如:
>>> name = "I'm oldboy, I love pyt\
... hon"
>>> name
"I'm oldboy, I love python"
行長度
一般的,每行不超過80
個字元,但也有例外:
-
長的匯入模組語句
-
註釋裡的
URL
-
不要使用反斜槓連線行
Python會將 圓括號, 中括號和花括號中的行隱式的連線起來 , 你可以利用這個特點. 如果需要, 你可以在表示式外圍增加一對額外的圓括號:
if (width == 0 and height == 0 and
color == 'red' and emphasis == 'strong'):pass
如果一個文字字串在一行放不下, 可以使用圓括號來實現隱式行連線:
x = ('This will build a very long long '
'long long long long long long string')
空行
頂級定義之間空兩行, 方法定義之間空一行。 頂級定義之間空兩行, 比如函式或者類定義. 方法定義, 類定義與第一個方法之間, 都應該空一行. 函式或方法中, 某些地方要是你覺得合適, 就空一行。