文章目錄
1、縮進
2、命名約定
3、Python之禪
PEP8是Python的官方文檔中提供的代碼規范,結合這套規范,我順便整理了一下自己的寫代碼習慣。
點這里查看PEP8官方原文,本文只節選了我自己比較看重的一些規范,僅供參考。
1、縮進
強制縮進的規定,讓代碼看上去很整齊,強迫癥表示很喜歡。
第一種情況:代碼塊的分割
Python使用一個冒號和縮進,來分割代碼塊,代碼塊指的是類的定義、函數的定義、流程控制中if、for、while模塊。縮進表示一個代碼塊的開始,非縮進表示一個代碼的結束,相同的縮進表示在代碼塊中處于相同的級別。
每一級縮進使用一個tab鍵(四個空格)。實際上一個空格就可以,但是一個空格看起來不那么明顯,所以用一個tab更方便、清楚。
例如下面,就是2個代碼塊(兩個代碼塊之間建議空一行)。
# 一個冒號加換行縮進,開啟一個代碼塊,直到下面一行不縮進了,說明下面一行已經不在這個代碼塊里了
if a>b:
print(a)
def print_name(var):
print(var)
print('haha')
第二種情況:換行
有時候寫一行代碼,特別特別長的時候,就需要換行。文檔建議續行與其包裹元素對齊,譬如用括號來垂直對齊,如下。
# 換行后的括號里內容,不超過上一行的括號
foo = long_function_name(var_one, var_two,
var_three, var_four)
2、命名約定
變量名可以是字母、數字、下劃線的組合,不能以數字開頭,也不可以用關鍵字來命名哦!
關鍵字,就是有特殊意義的字符:
import keyword
print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'break', \
'class', 'continue', 'def', 'del', 'elif', 'else', 'except',\
'finally', 'for', 'from', 'global', 'if', 'import', 'in', \
'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',\
'return', 'try', 'while', 'with', 'yield']
除此之外,還有一些其他的規范:
1)Python 里面區分大小寫,類名一般使用首字母大寫;
2)慎用字母I(i的大寫)、l(L的小寫)、o、O,因為可能被人錯看成數字1和0;
3)命名應既簡短又具有描述性。例如,student_name比s_n好,name_length比length_of_persons_name好;
4)在運算符前后各保留一個空格,例如 n == 1;
3、Python之禪
Python 中內置了一個彩蛋,簡單明了地說明了 Python 的哲學,只要輸入 import this,然后按下回車就能看到原文,這里貼出中文翻譯版本:
Python之禪
by Tim Peters
優美勝于丑陋
明了勝于隱晦
簡潔勝于復雜
復雜勝于混亂
扁平勝于嵌套
寬松勝于緊湊
可讀性很重要
即便是特例,也不可違背這些規則
雖然現實往往不那么完美
但是不應該放過任何異常
除非你確定需要如此
如果存在多種可能,不要猜測
肯定有一種——通常也是唯一一種——最佳的解決方案
雖然這并不容易,因為你不是Python之父
動手比不動手要好
但不假思索就動手還不如不做
如果你的方案很難懂,那肯定不是一個好方案
如果你的方案很好懂,那肯定是一個好方案
命名空間非常有用,我們應當多加利用