1. 程式人生 > 其它 >google python程式碼規範_Python程式碼這樣寫才規範優雅! (二)

google python程式碼規範_Python程式碼這樣寫才規範優雅! (二)

技術標籤:google python程式碼規範

f5b3b20cc1fd3601867bcfe5a40fd098.gif 前文傳送門: Python程式碼這樣寫才規範優雅! (一) 參考: https://www.python.org/dev/peps/pep-0008/ Python PEP8編碼規範的內容如下:
1.Introduction介紹2.AFoolishConsistencyistheHobgoblinofLittleMinds盡信書,則不如無書3.Codelay-out程式碼佈局3.1Indentation縮排3.2TabsorSpaces?製表符還是空格?3.3MaximumLineLength行的最大長度3.4Shouldalinebreakbeforeorafter a binary operator? 在二元運算子之前應該換行嗎?3.5BlankLines空行3.6SourceFileEncoding原始檔編碼3.7Imports匯入3.8Module level dunder names 模組級的“呆”名4.StringQuotes字串引號5.WhitespaceinExpressionsandStatements表示式和語句中的空格5.1PetPeeves不能忍受的事情5.2OtherRecommendations其他建議6.Comments註釋6.1BlockComments塊註釋6.2InlineComments行內註釋6.3DocumentationStrings文件字串7.NamingConventions命名規範7.1OverridingPrinciple最重要的原則7.2Descriptive: Naming Styles 描述:命名風格7.3Prescriptive: Naming Conventions 約定俗成:命名約定7.4Publicandinternalinterfaces公共和內部的介面8.ProgrammingRecommendations程式設計建議8.1FunctionAnnotations功能註釋9.參考
我們接著上一篇的內容繼續看: 4. String Quotes 字串引號 在Python中,單引號和雙引號字串是相同的。 PEP不會為這個給出建議。 選擇一條規則並堅持使用下去。 當一個字串中包含單引號或者雙引號字元的時候,使用和最外層不同的符號來避免使用反斜槓,從而提高可讀性。 對於三引號字串,總是使用雙引號字元來與PEP257中的文件字串約定保持一致。 5. Whitespace in Expressions and Statements 表示式和語句中的空格 5.1 Pet Peeves 不能忍受的事情 在下列情況下,避免使用無關的空格: 緊跟在小括號,中括號或者大括號後。
Yes:spam(ham[1],{eggs:2})No:spam(ham[1],{eggs:2})
緊貼在逗號、分號或者冒號之前。
Yes:ifx==4:printx,y;x,y=y,xNo:ifx==4:printx,y;x,y=y,x
然而,冒號在切片中就像二元運算子,在兩邊應該有相同數量的空格(把它當做優先順序最低的操作符)。 在擴充套件的切片操作中,所有的冒號必須有相同的間距。 例外情況: 當一個切片引數被省略時,空格就被省略了。
推薦:ham[1:9],ham[1:9:3],ham[:9:3],ham[1::3],ham[1:9:]ham[lower:upper],ham[lower:upper:],ham[lower::step]ham[lower+offset:upper+offset]ham[:upper_fn(x):step_fn(x)],ham[::step_fn(x)]ham[lower+offset:upper+offset]
不推薦:ham[lower+offset:upper+offset]ham[1:9],ham[1:9],ham[1:9:3]ham[lower::upper]ham[:upper]
緊貼在函式引數的左括號之前。
Yes:spam(1)No:spam(1)
緊貼索引或者切片的左括號之前。
Yes:dct['key']=lst[index]No:dct['key']=lst[index]
為了和另一個賦值語句對齊,在賦值運算子附件加多個空格。
推薦:x=1y=2long_variable=3
不推薦:x=1y=2long_variable=3
5.2 Other Recommendations 其他建議 避免在尾部新增空格。 因為尾部的空格通常都看不見,會產生混亂: 比如,一個反斜槓後面跟一個空格的換行符,不算續行標記。 有些編輯器不會保留尾空格,並且很多專案(像CPython)在pre-commit的掛鉤呼叫中會過濾掉尾空格。 總是在二元運算子兩邊加一個空格: 賦值(=),增量賦值(+=,-=),比較(==,,!=,<>,<=,>=,in,not,in,is,is not),布林(and, or, not)。 如果使用具有不同優先順序的運算子,請考慮在具有最低優先順序的運算子周圍新增空格。 有時需要通過自己來判斷; 但是,不要使用一個以上的空格,並且在二元運算子的兩邊使用相同數量的空格。
推薦:i=i+1submitted+=1x=x*2-1hypot2=x*x+y*yc=(a+b)*(a-b)
不推薦:i=i+1submitted+=1x=x*2-1hypot2=x*x+y*yc=(a+b)*(a-b)
在制定關鍵字引數或者預設引數值的時候,不要在=附近加上空格。
推薦:defcomplex(real,imag=0.0):returnmagic(r=real,i=imag)
不推薦:defcomplex(real,imag=0.0):returnmagic(r=real,i=imag)
功能型註釋應該使用冒號的一般性規則,並且在使用->的時候要在兩邊加空格。 (參考下面的功能註釋得到能夠多資訊)
推薦:defmunge(input:AnyStr):...defmunge()->AnyStr:...
不推薦:defmunge(input:AnyStr):...defmunge()->PosInt:...
當給有型別備註的引數賦值的時候,在=兩邊新增空格(僅針對那種有型別備註和預設值的引數)。
推薦:defmunge(sep:AnyStr=None):...defmunge(input:AnyStr,sep:AnyStr=None,limit=1000):...
不推薦:defmunge(input:AnyStr=None):...defmunge(input:AnyStr,limit=1000):...
複合語句(同一行中的多個語句)通常是不允許的。
推薦:iffoo=='blah':do_blah_thing()do_one()do_two()do_three()
最好別這樣:
iffoo=='blah':do_blah_thing()do_one();do_two();do_three()
雖然有時候將小的程式碼塊和 if/for/while 放在同一行沒什麼問題,多行語句塊的情況不要這樣用,同樣也要避免程式碼行太長! 最好別這樣:
iffoo=='blah':do_blah_thing()forxinlst:total+=xwhilet10:t=delay()
絕對別這樣:
iffoo=='blah':do_blah_thing()else:do_non_blah_thing()try:something()finally:cleanup()do_one();do_two();do_three(long,argument,list,like,this)iffoo=='blah':one();two();three()
精選文章推薦閱讀: 從零開始學自然語言處理(一)—— jieba 分詞 從零開始學自然語言處理(二)——手把手帶你用程式碼實現word2vec 從零開始學自然語言處理(三)——手把手帶你實現word2vec(skip-gram) 從零開始學自然語言處理(四)—— 做 NLP 任務文字 id 化與預訓練詞向量初始化方法 從零開始學自然語言處理(五)—— 詞性標註 從零開始學自然語言處理(六)—— 命名實體識別 從零開始學自然語言處理(七)—— 句法結構分析 從零開始學自然語言處理(八)—— jieba 黑科技 從零開始學自然語言處理(九)—— 依存句法分析 掃碼下圖關注我們不會讓你失望! 2231bf4d6f3a63a981c0a4b9dce20997.png 035a5b6ff4b86c78b57b6c3729df96a2.png 你點的每個在看,是我原創的動力!