python的下劃線

2022-06-13 07:33:09 字數 809 閱讀 5847

首先是單下劃線開頭,這個被常用於模組中,在乙個模組中以單下劃線開頭的變數和函式被預設當作內部函式,如果使用 from a_module import * 匯入時,這部分變數和函式不會被匯入。不過值得注意的是,如果使用 import a_module 這樣匯入模組,仍然可以用 a_module._some_var 這樣的形式訪問到這樣的物件。

雙下劃線開頭的命名形式在 python 的類成員中使用表示名字改編 (name mangling),即如果有一 test 類裡有一成員 __x,那麼 dir(test) 時會看到 _test__x 而非 __x。這是為了避免該成員的名稱與子類中的名稱衝突。但要注意這要求該名稱末尾沒有下劃線。

雙下劃線開頭雙下劃線結尾的是一些 python 的「魔術」物件,如類成員的 __init__、__del__、__add__、__getitem__ 等,以及全域性的 __file__、__name__ 等。 python 官方推薦永遠不要將這樣的命名方式應用於自己的變數或函式,而是按照文件說明來使用。

另外單下劃線開頭還有一種一般不會用到的情況在於使用乙個 c 編寫的擴充套件庫有時會用下劃線開頭命名,然後使用乙個去掉下劃線的 python 模組進行包裝。如 struct 這個模組實際上是 c 模組 _struct 的乙個 python 包裝。

更多關於命名的內容可以參考 pep 8 《**風格指南》的 name conventions 一節:

需要說明的是,由於這份文件看起來經過多次修改,雙下劃線開頭的用法似乎曾經如 @makestory 所說,建議為類的私有成員,至少啄木鳥社群的 pep 8 譯文是這樣寫的,但 pep 8 當前的官方版本中並沒有體現。

啄木鳥的譯文參考:

Python單下劃線和雙下劃線

python 用下劃線作為變數字首和字尾指定特殊變數。不能用 from moduleimport 匯入 系統定義名字 類中的私有變數名 核心風格 避免用下劃線作為變數名的開始。因為下劃線對直譯器有特殊的意義,而且是內建識別符號所使用的符號,我們建議程式設計師避免用下 劃線作為變數名的開始。一般來講,...

python的單下劃線和雙下劃線

python 類中的單下劃線開頭的變數表示 該方法為類的私有方法,原則上外部不能訪問,但是用.xx是可以訪問到的 雙下劃線開頭則是強制外部不能直接訪問的用.xx是訪問不到的,它內部其實是將變數名重新命名為 類名 變數名,所以可以通過.類名 變數名訪問 coding utf 8 author linh...

Python 單下劃線和雙下劃線解析

單下劃線 單下劃線開始的成員變數叫做保護變數,意思是只有類物件和子類物件自己能訪問到這些變數 雙下劃線 開始的是私有成員,意思是只有類物件自己能訪問,連子類物件也不能訪問到這個資料。如下列所示 以單下劃線開頭 foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不能用 from impo...