原文:https://zhuanlan.zhihu.com/p/36173202
- 單前導下划線:_var
- 單末尾下划線:var_
- 雙前導下划線:__var
- 雙前導和末尾下划線:__var__
- 單下划線:_
1. 單前導下划線 _var
下划線前綴的含義是告知其他程序員:以單個下划線開頭的變量或方法僅供內部使用。 該約定在PEP 8中有定義。注意,外部仍然可以調用
單個下划線是一個Python命名約定,表示這個名稱是供內部使用的。 它通常不由Python解釋器強制執行,僅僅作為一種對程序員的提示
2. 單末尾下划線 var_
有時候,一個變量的最合適的名稱已經被一個關鍵字所占用。 因此,像class或def這樣的名稱不能用作Python中的變量名稱。 在這種情況下,你可以附加一個下划線來解決命名沖突。
3. 雙前導下划線 __var
雙下划線前綴會導致Python解釋器重寫屬性名稱,以避免子類中的命名沖突。
這也叫做名稱修飾(name mangling) - 解釋器更改變量的名稱,以便在類被擴展的時候不容易產生沖突。
在類上下文中使用,用於內部被調用,外部無法看到(完全私有,不同於單前下划線,那個是可以外部調用的)
4. 雙前導和雙末尾下划線 _var_
魔術方法。
5.單下划線 _
按照習慣,有時候單個獨立下划線是用作一個名字,來表示某個變量是臨時的或無關緊要的。
例如,在下面的循環中,我們不需要訪問正在運行的索引,我們可以使用“_”來表示它只是一個臨時值:
>>> for _ in range(32): ... print('Hello, World.')
你也可以在拆分(unpacking)表達式中將單個下划線用作“不關心的”變量,以忽略特定的值。 同樣,這個含義只是“依照約定”,並不會在Python解釋器中觸發特殊的行為。 單個下划線僅僅是一個有效的變量名稱,會有這個用途而已。