[轉(zhuǎn)]關(guān)于python中帶下劃線的變量和函數(shù) 的意義

1 變量

1)前帶 _ 的變量: 標(biāo)明是一個(gè)私有變量, 只用于標(biāo)明, 外部類還是可以訪問到這個(gè)變量
2)前帶兩個(gè) _ ,后帶兩個(gè) _ 的變量:標(biāo)明是內(nèi)置變量,
3)大寫加下劃線的變量: 標(biāo)明是不會(huì)發(fā)生改變的全局變量

常量 : 大寫加下劃線
USER_CONSTANT
對(duì)于不會(huì)發(fā)生改變的全局變量聚磺,使用大寫加下劃線败京。

私有變量 : 小寫和一個(gè)前導(dǎo)下劃線
_private_value
Python 中不存在私有變量一說葛家,若是遇到需要保護(hù)的變量毕泌,使用小寫和一個(gè)前導(dǎo)下劃線惯裕。但這只是程序員之間的一個(gè)約定玄叠,用于警告說明這是一個(gè)私有變量欣尼,外部類不要去訪問它祸穷。但實(shí)際上性穿,外部類還是可以訪問到這個(gè)變量。

內(nèi)置變量 : 小寫雷滚,兩個(gè)前導(dǎo)下劃線和兩個(gè)后置下劃線
__class__
兩個(gè)前導(dǎo)下劃線會(huì)導(dǎo)致變量在解釋期間被更名需曾。這是為了避免內(nèi)置變量和其他變量產(chǎn)生沖突。用戶定義的變量要嚴(yán)格避免這種風(fēng)格祈远。以免導(dǎo)致混亂呆万。

2 函數(shù)和方法

1)前帶 _ 的變量: 標(biāo)明是一個(gè)私有函數(shù), 只用于標(biāo)明,
2)前帶兩個(gè) _ ,后帶兩個(gè) _ 的函數(shù): 標(biāo)明是特殊函數(shù)

總體而言應(yīng)該使用,小寫和下劃線车份。但有些比較老的庫(kù)使用的是混合大小寫谋减,即首單詞小寫,之后每個(gè)單詞第一個(gè)字母大寫扫沼,其余小寫出爹。但現(xiàn)在庄吼,小寫和下劃線已成為規(guī)范。

私有方法 : 小寫和一個(gè)前導(dǎo)下劃線

def _secrete(self):
    print "don't test me."

這里和私有變量一樣严就,并不是真正的私有訪問權(quán)限总寻。同時(shí)也應(yīng)該注意一般函數(shù)不要使用兩個(gè)前導(dǎo)下劃線(當(dāng)遇到兩個(gè)前導(dǎo)下劃線時(shí),Python 的名稱改編特性將發(fā)揮作用)梢为。
特殊函數(shù)后面會(huì)提及渐行。

特殊方法 : 小寫和兩個(gè)前導(dǎo)下劃線,兩個(gè)后置下劃線

def __add__(self, other):
    return int.__add__(other)

這種風(fēng)格只應(yīng)用于特殊函數(shù)铸董,比如操作符重載等祟印。

函數(shù)參數(shù) : 小寫和下劃線,缺省值等號(hào)兩邊無空格

def connect(self, user=None):
    self._user = user

3 類

類總是使用駝峰格式命名粟害,即所有單詞首字母大寫其余字母小寫旁理。類名應(yīng)該簡(jiǎn)明,精確我磁,并足以從中理解類所完成的工作孽文。常見的一個(gè)方法是使用表示其類型或者特性的后綴,例如:

SQLEngine
MimeTypes

對(duì)于基類而言夺艰,可以使用一個(gè) Base 或者 Abstract 前綴

BaseCookie
AbstractGroup
class UserProfile(object):
    def __init__(self, profile):
        return self._profile = profile
    def profile(self):
        return self._profile

4 模塊和包

除特殊模塊 __init__ 之外芋哭,模塊名稱都使用不帶下劃線的小寫字母。
若是它們實(shí)現(xiàn)一個(gè)協(xié)議郁副,那么通常使用lib為后綴减牺,例如:
import smtplib

import os
import sys

5 關(guān)于參數(shù)

5.1 不要用斷言來實(shí)現(xiàn)靜態(tài)類型檢測(cè)

斷言可以用于檢查參數(shù),但不應(yīng)僅僅是進(jìn)行靜態(tài)類型檢測(cè)存谎。 Python 是動(dòng)態(tài)類型語言拔疚,靜態(tài)類型檢測(cè)違背了其設(shè)計(jì)思想。斷言應(yīng)該用于避免函數(shù)不被毫無意義的調(diào)用既荚。

5.2 不要濫用 *args**kwargs

*args**kwargs參數(shù)可能會(huì)破壞函數(shù)的健壯性稚失。它們使簽名變得模糊,而且代碼常常開始在不應(yīng)該的地方構(gòu)建小的參數(shù)解析器恰聘。

6 其他

6.1 使用 has 或 is 前綴命名布爾元素

is_connect = True
has_member = False

6.2 用復(fù)數(shù)形式命名序列

members = ['user_1', 'user_2']

6.3 用顯式名稱命名字典

person_address = {'user_1':'10 road WD', 'user_2' : '20 street huafu'}

6.4 避免通用名稱

諸如 list, dict, sequence 或者 element 這樣的名稱應(yīng)該避免句各。

6.5 避免現(xiàn)有名稱

諸如 os, sys 這種系統(tǒng)已經(jīng)存在的名稱應(yīng)該避免。

7 一些數(shù)字

一行列數(shù) : PEP 8 規(guī)定為 79 列晴叨,這有些苛刻了凿宾。根據(jù)自己的情況,比如不要超過滿屏?xí)r編輯器的顯示列數(shù)兼蕊。這樣就可以在不動(dòng)水平游標(biāo)的情況下初厚,方便的查看代碼。

一個(gè)函數(shù) : 不要超過 30 行代碼, 即可顯示在一個(gè)屏幕類孙技,可以不使用垂直游標(biāo)即可看到整個(gè)函數(shù)产禾。
一個(gè)類 : 不要超過 200 行代碼排作,不要有超過 10 個(gè)方法。
一個(gè)模塊 不要超過 500 行下愈。

Python 的代碼風(fēng)格由 PEP 8 描述纽绍。這個(gè)文檔描述了 Python 編程風(fēng)格的方方面面蕾久。在遵守這個(gè)文檔的條件下势似,不同程序員編寫的 Python 代碼可以保持最大程度的相似風(fēng)格。這樣就易于閱讀僧著,易于在程序員之間交流履因。

原文連接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市盹愚,隨后出現(xiàn)的幾起案子栅迄,更是在濱河造成了極大的恐慌,老刑警劉巖皆怕,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毅舆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡愈腾,警方通過查閱死者的電腦和手機(jī)憋活,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來虱黄,“玉大人悦即,你說我怎么就攤上這事〕髀遥” “怎么了辜梳?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)泳叠。 經(jīng)常有香客問我作瞄,道長(zhǎng),這世上最難降的妖魔是什么危纫? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任粉洼,我火速辦了婚禮,結(jié)果婚禮上叶摄,老公的妹妹穿的比我還像新娘属韧。我一直安慰自己,他們只是感情好蛤吓,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布宵喂。 她就那樣靜靜地躺著,像睡著了一般会傲。 火紅的嫁衣襯著肌膚如雪锅棕。 梳的紋絲不亂的頭發(fā)上拙泽,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音裸燎,去河邊找鬼顾瞻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛德绿,可吹牛的內(nèi)容都是我干的荷荤。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼移稳,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蕴纳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起个粱,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤古毛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后都许,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稻薇,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年胶征,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了塞椎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡弧烤,死狀恐怖忱屑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情暇昂,我是刑警寧澤莺戒,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站急波,受9級(jí)特大地震影響从铲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜澄暮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一名段、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泣懊,春花似錦伸辟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春静稻,著一層夾襖步出監(jiān)牢的瞬間警没,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工振湾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杀迹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓押搪,卻偏偏與公主長(zhǎng)得像树酪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嵌言,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容