Crossin的編程教室 2020-08-05python
如下文章來源於學習python的正確姿式 ,做者小帥b面試
快,關注一波——————> 接下來,就是學習 python 的正確姿式。小帥b帶你玩轉 python !app
咱們在定義一些變量或者方法的時候,經常會用到下劃線。在 Python 中,下劃線的出鏡率很是高,好比變量,有些是一個下劃線開頭的(_xx),有些是兩個下劃線開頭的(__xx),有些是在名稱的結尾添加下劃線的(xx_),還有一些方法咱們經常看到兩個下劃線開頭和結尾的(__xx__) 等等…
爲何要這麼寫呢?它們都表明什麼意思?咱們之後如何定義好這些名稱呢?今天就給你們來講一說。
一、只有一個下劃線(_)是幹嗎的呢?
在 Python 解釋器裏面,對單個下劃線是有特殊的 「感情」 的,我來給你舉個例子:仔細看你會發現,_ 是有值的,這是由於在 Python 解釋器裏面, _ 會指向你最後一次執行的表達式。這在咱們使用 Python 交互的時候經常會用到。
除此以外,咱們還可使用單個下劃線來格式化變量的值,好比金額:經過這樣的表現,咱們能更加易讀, Python 也知道咱們在表示什麼。
再者,單個下劃線還可使用在循環語句中:ide
二、你常見的 __xx__
這種以兩個下劃線開頭和結尾的命名方式,我想應該是你最多見到的了,好比咱們以前說的類的初始化方法:其實這些,咱們叫它們爲 「魔法函數」 ,也就是說,它是 Python 內置好了的,咱們能夠直接拿來使用。因此你應該儘可能避免作這樣相似的以兩個下劃線開頭和結尾的方式去命名。
三、單個下劃線開頭的 _xx
以單個下劃線開頭命名的方法或者變量,就是說明它是僅提供內部使用的。
舉一個例子,咱們來建立一個模塊(handsomeb.py),而後在裏面建立兩個方法,一個以單個下劃線開頭命名,一個不以單個下劃線開頭命名:接着咱們去引用這個模塊,分別執行模塊中的方法:當咱們去執行 my_func() 輸出 fxxkpython ,沒毛病吧:可是當咱們去執行 _my_func() 的時候就不行了:這時候它告訴咱們 _my_func 沒有定義,由於它只能被模塊內部使用。
四、單個下劃線結尾的 xx_
咱們知道, Python 有許多關鍵詞,好比 def、return、calss、pass 這些,它們都是有特殊的意義的,因此咱們在定義變量或者方法的時候,不能夠用它們來命名的,好比這樣是錯誤的:若是你必定要用這樣的名稱呢?爲了區分,在它們的後面添加一個下劃線:可是不建議這樣命名,有那麼多名稱,何須去定義關鍵詞相關的名稱呢。函數
五、兩個下劃線開頭的命名: __xx學習
這種命名的方式更多的是用在類的繼承,經過兩個下劃線開頭命名的成員,能夠防止被子類重寫。
咱們來寫一個這樣的 Person 類:能夠看到,在 Person 這個類裏面,有兩個變量,一個是 name ,一個是 age。不過 age 是以兩個下劃線開頭命名了。
當咱們去實例化這個 Person 的時候,發現 name 能夠正常訪問,可是 __age 沒法訪問了。
咱們來打印一下這個對象的屬性:仔細看,name 仍是 name, 可是 __age 變成了 _Person__age。
因此咱們沒法重寫原來的 __age:flex
咱們來打印一下這個 Son 類的屬性:能夠發現,son 裏面的 __age 實質上已經變成了 _Son__age。因此你要獲得真正重寫的值能夠這樣:六、一個下劃線+類名+兩個下劃線開頭的命名: _classname__xx
經過上面第 5 點的解釋,那麼還有這麼一種命名方式應該對你來講就好理解了:你能夠這樣去使用它:OK,以上就是 Python 中各類下劃線的用法和解釋,但願對你有幫助。瞭解這些用法,之後在別的代碼看到就不會懵了。並且,這些容易忽視的語法細節,多是不少面試官熱衷的問題呢!
做者:小帥b來源:學習python的正確姿式ui