首先,各個編程語言都有自己的代碼規範,統一的代碼規範,不僅能提高代碼的可讀性,還能提升代碼的維護性,團隊內部的集成也會更加順暢,同時也能更輕易發現代碼的問題。
團隊編程的目標,所有人寫的代碼像一個人寫出來的。
都說Python是一門優雅的語言,那就更少不了裝飾和美化。Python在開發之初,已經規範了代碼的整體原則,那就是Python之禪。
在交互式解釋器中輸入import this就會顯示 Tim Peters 的 “The Zen of Python”
當然,也可以在pycharm中:
import this
print()
放張高清大圖:
整體意思就是Python以優雅簡潔爲目標。具體翻譯,大家可以參考下:
目前比較通用的是pep8規範,大家可以根據下方的官方文檔進行學習,其中的PEP8是 Style Guide for Python Code,譯爲:Python代碼樣式指南。
pep8規範官網地址:https://www.python.org/dev/peps/pep-0008/,內容不少,大家沒事可以去詳細看看。
其中最值得初學者注意的就是代碼佈局了,養成良好的代碼佈局習慣,不僅自己看着賞心悅目,也能讓將來的同行少掉兩根頭髮because你那亂七八糟的代碼。
然後就講講代碼佈局:
-
縮進
-
每個縮進級別使用4個空格。
-
續行應使用在括號,方括號和花括號內使用Python的隱式線垂直對齊包裝的元素,或使用懸掛式縮進 。使用懸掛式凹痕時,應考慮以下幾點:第一行不應有任何論點,而應使用進一步的縮進來清楚地將其區分爲延續行。
#與打開定界符對齊。
foo = long_function_name(var_one,var_two,
var_three,var_four)
#添加4個空格(額外的縮進級別)以將參數與其餘參數區分開。
def long_function_name(
var_one,var_two,var_three,
var_four):
print(var_one)
#懸掛的縮進應添加一個級別。
foo = long_function_name(
var_one,var_two,
var_three,var_four)
右邊括號也可以另起一行。有兩種格式,建議第2種。
# 右括號不回退,個人不推薦
my_list = [
1, 2, 3,
4, 5, 6,
]
result = some_function_that_takes_arguments(
'a', 'b', 'c',
'd', 'e', 'f',
)
# 右括號回退
my_list = [
1, 2, 3,
4, 5, 6,
]
result = some_function_that_takes_arguments(
'a', 'b', 'c',
'd', 'e', 'f',
)
-
製表符或空格
-
空格是首選的縮進方法。
-
製表符應僅用於與已經用製表符縮進的代碼保持一致。
-
在 list, dict, tuple, set, 參數列表的 , 後面加一個空格
-
在 dict 的 : 後面加一個空格
-
Python 3不允許混合使用製表符和空格進行縮進
-
最大行寬
-
限制所有行的最大行寬爲79字符
-
文本長塊,比如文檔字符串或註釋,行長度應限制爲72個字符
-
空行
-
function 和 class 頂上兩個空行
-
class 的 method 之間一個空行
-
函數內邏輯無關的段落之間空一行,不要過度使用空行
-
不要把多個語句寫在一行,然後用 ; 隔開
-
if/for/while 語句中,即使執行語句只有一句,也要另起一行
-
導入在單獨行(包)
-
導入位置:在文件的頂部,在模塊註釋和文檔字符串之後,在模塊全局變量和常量之前
-
導入順序:標準庫,相關的第三方庫,本地庫。各組的導入之間要有空行。
-
禁止使用通配符導入:通配符導入(from import *)應該避免,因爲它不清楚命名空間有哪些名稱存,混淆讀者和許多自動化的工具。
-
括號裏邊避免空格
# 括號裏邊避免空格
#推薦
spam(ham[1], {eggs: 2})
# 不推薦
spam( ham[ 1 ], { eggs: 2 } )
- 逗號,冒號,分號之前避免空格
if x == 4: print x, y; x, y = y, x
- 函數調用的左括號之前不能有空格
# 推薦
spam(1)
dct['key'] = lst[index]
spam (1)
dct ['key'] = lst [index]
- 賦值等操作符前後不能因爲對齊而添加多個空格
x = 1
y = 2
variable = 3
- 二元運算符兩邊放置一個空格
- 涉及 =、符合操作符 ( += , -=等)、比較( == , < , > , != , <> , <= , >= , 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)
- 關鍵字參數和默認值參數的前後不要加空格
def complex(real, imag=0.0):
return magic(r=real, i=imag)
-
包和模塊名
-
模塊名要簡短,全部用小寫字母,可使用下劃線以提高可讀性
-
包名和模塊名類似,但不推薦使用下劃線
-
避免採用如下名字
-
決不要用字符’l’(小寫字母el),‘O’(大寫字母oh),或 ‘I’(大寫字母eye) 作爲單個字符的變量名。
-
一些字體中,這些字符不能與數字1和0區別。用’L’ 代替’l’時。
-
一鍵排版
pycharm有個很好用的插件:CodeGlance
依次 File -> settings -> Plugins 搜索 CodeGlance 安裝
安裝完後重啓pycharm
也不需要幹別的,你就只管敲代碼,敲了一頓後發現代碼好亂:(我這裏隨便敲兩句舉個例子)沒關係,看見代碼下面的灰色波浪線了嗎,把鼠標放在上面,會出現提示:
點擊那個 Reformat file ,然後你會發現:
代碼自動變工整了。
不過呢,由於我們上面說了,目前python大多遵守pep8規範,在這裏也有一個與pep8相關的工具推薦給大家:
pip install autopep8
依次 File -> settings -> Tools -> External Tools,然後點擊那個加號
然後依次填寫下面的配置:
autopep8(這是名字,可以隨便寫,建議寫這個)
autopep8
--in-place --aggressive --aggressive $FilePath$
$ProjectFileDir$
$FILE_PATH$\:$LINE$\:$COLUMN$\:.*
配置完了就是這個樣子:
使用方法有兩種:
可以在最上面 Tools -> External Tools -> autopep8 規範代碼
也可以在左邊文件欄右鍵當前文件,選擇 External Tools -> autopep8 也可以對當前代碼進行規範
就這麼多,OK!