小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

優(yōu)雅的代碼--PEP8規(guī)范

 正合叔 2019-10-31

每日分享

Progress is impossible without change, and those who cannot change their minds cannot change anything.

沒(méi)有改變就不可能取得進(jìn)步,那些不愿改變想法的人無(wú)法改變?nèi)魏问隆?/p>

小閆語(yǔ)錄

想要改變,首先是改變想法,否則只能重蹈覆轍。

PEP8規(guī)范

當(dāng)入職一家公司,看到了一份亂糟糟的源碼,你是不是心里奔騰著無(wú)數(shù)的草泥馬?當(dāng)你離職,留給后人的代碼又如何呢?與人方便與己方便,規(guī)范代碼,從我做起。為了讓我們的代碼提高可讀性,便于后期維護(hù),官方提供了一種規(guī)范,這就是PEP8。那么具體的內(nèi)容是什么呢?下面一起來(lái)看看吧。

1.縮進(jìn)

1.對(duì)于每一級(jí)縮進(jìn),采用四個(gè)空格(有的公司使用3個(gè)空格,視情況而定,但是官方推薦為4個(gè))。如下:

  1. def func():

  2. print('I'm EthanYan')

print前面有4個(gè)空格。

也許你因?yàn)槭褂靡恍┕ぞ?,?xí)慣了Tab鍵。但是有一點(diǎn)你要明白,有些地方tab鍵不是4個(gè)空格,而且python3中不允許混合使用空格和Tab鍵縮進(jìn)。

2.括號(hào)里面包裹的參數(shù)過(guò)多時(shí),可以通過(guò)換行縮進(jìn)來(lái)表示,如下:

  1. demo = func_name(var_one,

  2. var_two,

  3. var_three)

當(dāng)然,下面的示例也是符合規(guī)范的:

  1. my_list = [

  2. 1,2,3,

  3. 4,5,6

  4. ]

2.行最大長(zhǎng)度

為了查看代碼時(shí),不需要來(lái)回的拉取滾動(dòng)條,影響體驗(yàn),所有行限制的最大字符數(shù)為79。對(duì)于文檔字符串或者注釋則應(yīng)控制在72個(gè)字符內(nèi)。

對(duì)于較長(zhǎng)的代碼優(yōu)先使用的續(xù)行方式并不是通過(guò)反斜杠,而是通過(guò)小括號(hào),中括號(hào)以及大括號(hào)中的隱式續(xù)行方式實(shí)現(xiàn)。

3.二元運(yùn)算符

在使用一些二元運(yùn)算符時(shí),如果變量名超長(zhǎng),需要換行,怎么辦?答案是在運(yùn)算符之前換行。

  1. # 推薦:運(yùn)算符和操作數(shù)很容易進(jìn)行匹配

  2. income = (gross_wages

  3. + taxable_interest

  4. + (dividends - qualified_dividends)

  5. - ira_deduction

  6. - student_loan_interest)

但是為了便于查看,盡量寫(xiě)在一行。

4.空行

1.頂層函數(shù)和類定義時(shí),前后用兩個(gè)空行隔開(kāi)。

2.類里面的方法定義用一個(gè)空行隔開(kāi)。

3.對(duì)于函數(shù)中不同的邏輯塊可以用空行隔開(kāi)。

5.源代碼

1.Python核心發(fā)布版本中的代碼總是以UTF-8格式編碼(或者在Python2中用ASCII編碼)。

2.使用ASCII(在Python2中)或UTF-8(在Python3中)編碼的文件不應(yīng)具有編碼聲明。

3.在標(biāo)準(zhǔn)庫(kù)中,如果需要使用非默認(rèn)的編碼,應(yīng)該將他們放在注釋或者文檔字符串中。比如作者的姓名。

6.導(dǎo)入

1.我們?cè)趯?dǎo)入模塊的時(shí)候,最好是放在頂部,而且還應(yīng)該遵循一定的規(guī)律:先導(dǎo)入標(biāo)準(zhǔn)庫(kù),再導(dǎo)入相關(guān)第三方庫(kù),最后導(dǎo)入本地模塊應(yīng)用之類的。每一組導(dǎo)入之間,加上空行就最好不過(guò)了。

2.當(dāng)然有時(shí)為了避免出現(xiàn)循環(huán)導(dǎo)入的問(wèn)題,我們需要在特殊的地方導(dǎo)入,這也無(wú)可厚非。

3.導(dǎo)包的時(shí)候還要注意使用絕對(duì)路徑導(dǎo)入,增加可讀性,提高代碼性能。但是凡事有例外,比如你的絕對(duì)路徑那么長(zhǎng),好吧,我比劃了一下,你沒(méi)有看見(jiàn),不怪我。這時(shí)你可以采用相對(duì)路徑:

  1. from . import ethanyan

4.避免使用通配符的導(dǎo)入,這樣會(huì)增加命名空間中名字的重復(fù)率。如下的方式,不推薦使用:

  1. from ethanyan import *

7.引號(hào)

單引號(hào)和雙引號(hào)是相同的,根據(jù)你自己的喜好使用。但是為了避免出錯(cuò),盡量使用單雙引號(hào)包裹的形式;而不是單引號(hào)里面繼續(xù)使用單引號(hào),再用反斜杠進(jìn)行轉(zhuǎn)義。

8.表達(dá)式中的空格問(wèn)題

1.對(duì)于小括號(hào)、中括號(hào)和大括號(hào)的使用,表達(dá)式緊跟括號(hào),不要添加空格。

  1. yes: func(1, 2)

  2. no : func( 1, 2)

2.逗號(hào)、封號(hào)、冒號(hào)等緊跟前面字符:

  1. yes: x, y, z

  2. no : x , y , z

3.冒號(hào)再切片中,就像二元運(yùn)算符一樣,兩邊應(yīng)該用相同數(shù)量的空格:

  1. example[1 : 9]

9.注釋

有一句話是這樣說(shuō)的:與代碼相矛盾的注釋比沒(méi)有注釋還糟糕。所以請(qǐng)不要亂添加注釋,而且在修改完代碼之后,請(qǐng)更新你的注釋,不要給后人留下一個(gè)爛攤子。

緊跟代碼的注釋,應(yīng)有至少兩個(gè)空格的分割,如下:

  1. x = x + 1 # 這是測(cè)試數(shù)據(jù)

10.命名規(guī)范

1.命名與python中標(biāo)識(shí)符的命名規(guī)則一樣,由字母數(shù)字下劃線組成,且數(shù)字不能開(kāi)頭。

2.當(dāng)然還有一些特殊的規(guī)則,比如大駝峰和小駝峰命名形式。

3.如果以單下劃線開(kāi)頭命名,那么在 frommimport*的時(shí)候是不會(huì)導(dǎo)入的。

4.有時(shí)候你會(huì)看到一些以單下劃線結(jié)尾的名字,不要奇怪。這是為了和python內(nèi)部關(guān)鍵詞不沖突的一種約定。

5.命名的時(shí)候不要使用魔方方法的形式如 __ni__。

6.避免混淆,不要使用有歧義的字符。如 l(小寫(xiě)的L)和 1多像,還有 O(英文字母)和 0(數(shù)字)多像,對(duì)吧?你也不想認(rèn)錯(cuò)。

7.類名首字母請(qǐng)大寫(xiě)。

8.異常命名的時(shí)候最后以 Error結(jié)尾,讓人一下子辨別出來(lái)。

9.命名要做到見(jiàn)名知義。

10.函數(shù)名要小寫(xiě)。

11.一些常量名要全部使用大寫(xiě)。比如在項(xiàng)目中的一些常量放在一個(gè)單獨(dú)的文件中,他們的名字應(yīng)該如下:MAX_OVERFLOW

11.其他的建議

1.避免在尾部添加空格。因?yàn)槲膊康目崭裢ǔ6伎床灰?jiàn),會(huì)產(chǎn)生混亂。比如,一個(gè)反斜杠后面跟一個(gè)空格的換行符,不算續(xù)行標(biāo)記。有些編輯器不會(huì)保留尾空格,并且很多項(xiàng)目(像 CPython)在pre-commit鉤子調(diào)用中會(huì)過(guò)濾掉尾空格。

2.前面也有所提到,就是在二元運(yùn)算符兩邊都加一個(gè)空格。那么有哪些符號(hào)呢?

  1. 賦值:= 、+= 、-=

  2. 比較:== 、< 、> 、!= 、<> 、<= 、>= 、in 、not in 、is 、is not

  3. 布爾:and 、or 、not

3.在使用運(yùn)算符的時(shí)候,有一個(gè)優(yōu)先級(jí)的問(wèn)題,我們需要在較低優(yōu)先級(jí)的運(yùn)算符兩邊添加空格(別指望提示,需要你自己判斷)??崭褡詈檬怯靡粋€(gè),而且前后數(shù)量相等。如下:

  1. x = x*2 - 1

4.指定關(guān)鍵字參數(shù)或者默認(rèn)參數(shù)值的時(shí)候,不要在 =附近添加空格。

當(dāng)然,規(guī)范中還有很多很多條目,這里只列出那些常用的、需要指出的部分。公司一般有自己的規(guī)范,嚴(yán)格按照文檔進(jìn)行編碼即可。當(dāng)然一些創(chuàng)業(yè)公司可能沒(méi)有,建議你使用本規(guī)范,養(yǎng)成良好的編碼習(xí)慣,工作中,看著也開(kāi)心。最后祝愿大家代碼無(wú)bug。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多