Python 中各種下劃線的騷操作:_、_xx、xx_、__xx、__xx__、_classname_裸睡的豬關(guān)注共 1629字,需瀏覽 4分鐘 ·2020-09-07 05:12 作者 | 小帥b來(lái)源 |?學(xué)習(xí)python的正確姿勢(shì)我們?cè)诙x一些變量或者方法的時(shí)候,常常會(huì)用到下劃線,在 Python 中,下劃線可是很有用處的喲,比如變量,有些是一個(gè)下劃線開(kāi)頭的(_xx),有些是兩個(gè)下劃線開(kāi)頭的(__xx),有些是在名稱的結(jié)尾添加下劃線的(xx_),還有一些方法我們常常看到兩個(gè)下劃線開(kāi)頭和結(jié)尾的(__xx__) 等等…為什么要這么寫(xiě)呢?它們都代表什么意思?我們以后如何定義好這些名稱呢?1、只有一個(gè)下劃線(_)是干嘛的呢?在 Python 解釋器里面,對(duì)單個(gè)下劃線是有特殊的 “感情” 的,我來(lái)給你舉個(gè)例子:仔細(xì)看你會(huì)發(fā)現(xiàn),_ 是有值的,這是因?yàn)樵?Python 解釋器里面, _ 會(huì)指向你最后一次執(zhí)行的表達(dá)式。這在我們使用 Python 交互的時(shí)候常常會(huì)用到。除此之外,我們還可以使用單個(gè)下劃線來(lái)格式化變量的值,比如金額:通過(guò)這樣的表現(xiàn),我們能更加易讀, Python 也知道我們?cè)诒硎臼裁础?/section>再者,單個(gè)下劃線還可以使用在循環(huán)語(yǔ)句中:2、你常見(jiàn)的?__xx__這種以兩個(gè)下劃線開(kāi)頭和結(jié)尾的命名方式,我想應(yīng)該是你最常見(jiàn)到的了,比如我們之前說(shuō)的類的初始化方法:其實(shí)這些,我們叫它們?yōu)?“魔法函數(shù)” ,也就是說(shuō),它是 Python 內(nèi)置好了的,我們可以直接拿來(lái)使用。所以你應(yīng)該盡量避免做這樣類似的以兩個(gè)下劃線開(kāi)頭和結(jié)尾的方式去命名。3、單個(gè)下劃線開(kāi)頭的?_xx以單個(gè)下劃線開(kāi)頭命名的方法或者變量,就是說(shuō)明它是僅提供內(nèi)部使用的。舉一個(gè)例子,我們來(lái)創(chuàng)建一個(gè)模塊(handsomeb.py),然后在里面創(chuàng)建兩個(gè)方法,一個(gè)以單個(gè)下劃線開(kāi)頭命名,一個(gè)不以單個(gè)下劃線開(kāi)頭命名:接著我們?nèi)ヒ眠@個(gè)模塊,分別執(zhí)行模塊中的方法:當(dāng)我們?nèi)?zhí)行 my_func() 輸出 fxxkpython ,沒(méi)毛病吧:但是當(dāng)我們?nèi)?zhí)行 _my_func() 的時(shí)候就不行了:這時(shí)候它告訴我們 _my_func 沒(méi)有定義,它只能被模塊內(nèi)部使用。4、單個(gè)下劃線結(jié)尾的?xx_我們知道, Python 有許多關(guān)鍵詞,比如 def、return、calss、pass 這些,它們都是有特殊的意義的,所以我們?cè)诙x變量或者方法的時(shí)候,不可以用它們來(lái)命名的,比如這樣是錯(cuò)誤的:那么如果我們死都要這樣定義名稱呢?為了區(qū)分,在它們的后面添加一個(gè)下劃線:但是小帥b不建議這樣命名,有那么多名稱,何必去定義關(guān)鍵詞相關(guān)的名稱呢。5、兩個(gè)下劃線開(kāi)頭的命名:?__xx這種命名的方式更多的是用在類的繼承,通過(guò)兩個(gè)下劃線開(kāi)頭命名的成員,可以防止被子類重寫(xiě)。我們來(lái)寫(xiě)一個(gè)這樣的 Person 類:可以看到,在 Person 這個(gè)類里面,有兩個(gè)變量,一個(gè)是 name ,一個(gè)是 age。不過(guò) age 是以兩個(gè)下劃線開(kāi)頭命名了。當(dāng)我們?nèi)?shí)例化這個(gè) Person 的時(shí)候,發(fā)現(xiàn) name 可以正常訪問(wèn),但是 __age 無(wú)法訪問(wèn)了。我們來(lái)打印一下這個(gè)對(duì)象的屬性:仔細(xì)看,name 還是 name, 但是 __age 變成了 _Person__age。所以我們無(wú)法重寫(xiě)原來(lái)的 __age:我們來(lái)打印一下這個(gè) Son 類的屬性:可以發(fā)現(xiàn),son 里面的 __age 實(shí)質(zhì)上已經(jīng)變成了 _Son__age。所以你要得到真正重寫(xiě)的值可以這樣:6、一個(gè)下劃線+類名+兩個(gè)下劃線開(kāi)頭的命名:?_classname__xx通過(guò)上面第 5 點(diǎn)的解釋,那么還有這么一種命名方式應(yīng)該對(duì)你來(lái)說(shuō)就好理解了:你可以這樣去使用它:ok,以上就是 Python 中各種下劃線的用法和解釋,希望對(duì)你有幫助,如果你看一遍之后有點(diǎn)懵,那就再看幾遍吧。當(dāng)你把別人忽略的東西掌握起來(lái),你就比他們牛逼了。 瀏覽 55點(diǎn)贊 評(píng)論 收藏 分享 手機(jī)掃一掃分享分享 舉報(bào) 評(píng)論圖片表情視頻評(píng)價(jià)全部評(píng)論推薦 Python 中各種下劃線的騷操作:_、_xx、xx_、__xx、__xx__、_classn...學(xué)習(xí)python的正確姿勢(shì)0Python 中的各種下劃線操作你了解嗎?Crossin的編程教室0詳解 Python 操作 PPT 的各種騷操作!數(shù)據(jù)分析14800XX:XXXX:XX0XX歌手AtacamaXX1534763622發(fā)布日期1971-01-01ISRCFRF251900058時(shí)長(zhǎng)7.06分鐘流派爵士樂(lè),音樂(lè)作曲家BrunoRougevin-BavilleXX歌手QunoXX1566536992發(fā)布日期2021-05-19ISRCJPB602166822時(shí)長(zhǎng)2.94分鐘流派嘻哈/說(shuō)唱,音樂(lè)作曲家Qunoxxxx0XXXX0XX歌手SoftasSnowXX1345632391發(fā)布日期2018-04-06ISRCGBEXH1700136時(shí)長(zhǎng)1.14分鐘流派另類音樂(lè),音樂(lè),電子音樂(lè)作曲家OdaEgjarStarheim&?ystXXXX0點(diǎn)贊 評(píng)論 收藏 分享 手機(jī)掃一掃分享分享 舉報(bào)