摘要:關于命名不同的對象會有不同的規范包小寫,可以使用但是不推薦使用下劃線。如果需要捕捉所有擾亂程序的異常,可以使用對于不同的輸入,函數的返回值類型應該保持一致字符串操作中,盡可能使用字符串類的方法判斷對象的類別,盡量使用歡迎討論,歡迎指出問題
前言
PEP 8 是python代碼規范說明,里面規定了一些推薦的python代碼的格式與用法。筆者將在本文中做一些總結,不是為了純粹的翻譯PEP 8,而是根據個人習慣與喜好進行的一個整理。如有謬誤,歡迎指出。
PEP 8 官方文檔:這里
A Follish Consistency is the Hobgoblin of Little Minds永遠不要為了和已有的文檔保持一致而特意做出不自然的改變,否則,這只會限制你的思維,降低你的效率。Guido在這里寫下的這些規范是處于代碼的可讀性考慮的,但是如果有的時候這些規范也不一定適用,例如:
如果使用了這些規范會降低可讀性;
如果代碼寫于規范面世以前;
如果代碼使用到了老版本的依賴庫,然而這些老版本的依賴庫且兼容新的規范;
如果已有代碼使用了另外的一種風格;
代碼規范
多參數情況下適當縮進
# function def long_function_name( # no argument on the first line var_one, var_two, # more indentation to distinguish this from the rest var_three, var_four): print(var_one) # list my_list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, # add a comma here to be consistent with the preceding lines ] # long if -statement if (this_is_one_thing and that_is_another_thing) # more indentation to distinguish this do_something()
使用4個空格鍵
每行字符數控制在79個以內,必要的時候可使用
with open("/path/to/the/file/to/read") as file_1, open("/path/to/the/file/to/read") as file_2: file_2.write(file_1.read())
多行分別import依賴庫,且須放在全局變量和常量之前
import os import sys import other_standard_libraries import related_third_parties ipmort local applications
python不區分雙引號"和單引號",選一個適合你自己的風格,然后堅持下去
空白符的規則很繁瑣,基本上和英文書寫的規范一致,下面列舉了部分情況
ham[1:9], ham[1:9:3], ham[1::3], ham[1:9:] ham[lower+offset : upper+offset] # equal amounts on either side of the operator
在分配默認值或者鍵值對賦值的時候,等號=周圍不要用空格
def complex(real, imag=0.0): return magic(r=real, i=img)
關于注釋,不要添加與代碼邏輯相違背的注釋,也不要添加顯而易見的注釋。記住一點,注釋是為了增強可讀性。
關于命名,不同的對象會有不同的規范:
包:小寫,可以使用但是不推薦使用下劃線_。一些利用C/C++編寫的包的名字可以以下劃線開頭;
類:CapWords命名規范,例如CapitalizeWords, HTTPServerError
異常:其本質是一個類,所以沿用上面的規范,另外需要以Error_開頭
函數:小寫,并且用下劃線隔開
方法與變量:沿用函數的命名規范,另外非公有變量需要以_開頭
方法規范與None作比較的使用,不要使用==,使用is或者is not
字符串的合并操作不要使用a += b或者a = a + b,使用"".join()
從Excepetion而不是BaseException庫中繼承異常
拋出異常的時候,請使用raise ValueError("message")
在捕捉異常語句中,請盡可能指明捕捉的異常類別。如果需要捕捉所有擾亂程序的異常,可以使用
try: some_magic() except Exception as exc: print(str(exc)) raise some_error else: everything_is_good() finally: clean_up()
對于不同的輸入,函數的返回值類型應該保持一致
def foo(x): if x >= 0: return math.sqrt(x) else: return None # should also be a value or None
字符串操作中,盡可能使用字符串類的方法
"".startswith() "".endswith()
判斷對象的類別,盡量使用isinstance()
歡迎討論,歡迎指出問題
Weiming
25 May 2016
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37967.html
摘要:如果需要在二元運算符周圍做換行操作,例如和,那么需要將換行操作放在前面,這條規則源于數學,數學家同意在二元運算符之前換行以可提高可讀性,比較以下兩個例子。在二元運算符之前換行可以讓代碼更加具有可讀性,所鼓勵這種方式。 原文地址:How to Write Beautiful Python Code With PEP 8 作者:Jasmine Finer 翻譯:howie6879 ...
摘要:或許你是一個初入門的小白,完全不知道是什么。到目前為止,它擁有個兄弟姐妹。此外,關于對的貢獻,還有一種很有效的方式,就是將翻譯成中文,造福國內的學習社區。 或許你是一個初入門Python的小白,完全不知道PEP是什么。又或許你是個學會了Python的熟手,見過幾個PEP,卻不知道這玩意背后是什么。那正好,本文將系統性地介紹一下PEP,與大家一起加深對PEP的了解。 目前,國內各類教程不...
閱讀 1389·2021-10-11 10:58
閱讀 1471·2021-09-04 16:41
閱讀 670·2019-08-30 15:55
閱讀 799·2019-08-29 18:46
閱讀 3133·2019-08-29 14:05
閱讀 3525·2019-08-26 14:00
閱讀 2448·2019-08-26 13:53
閱讀 3164·2019-08-26 13:29