新聞中心
單個(gè)下劃線開(kāi)頭表示這是一個(gè)非公共方法或?qū)傩?我們?yōu)閌_private_var`和`_private_method()`添加了前置單一下劃線。
- 本文目錄導(dǎo)讀:
- 1、什么是Python中的下劃線?
- 2、單獨(dú)使用下劃線
- 3、前置和后置單一下劃線
- 4、雙前置/后綴下劃線

什么是Python中的下劃線?
在Python編程語(yǔ)言中,下劃線(_)是一個(gè)常見(jiàn)而又神秘的符號(hào)。它有多種用途,包括作為變量名、函數(shù)參數(shù)和類屬性等。但許多初學(xué)者對(duì)于它到底代表什么意思感到困惑。
單獨(dú)使用下劃線
在Python中,單獨(dú)使用一個(gè)下劃線表示“我不關(guān)心這個(gè)變量的值”。比如說(shuō):
```
_, b = 1, 2
print(b) # 輸出2
上面代碼中,我們把第一個(gè)元素賦值給了`_`變量,在后續(xù)代碼執(zhí)行過(guò)程中沒(méi)有用到該變量。通常情況下我們會(huì)將其命名為無(wú)用或占位符。
同時(shí),在交互式環(huán)境(REPL)里面,最近一次計(jì)算結(jié)果可以通過(guò) `_ ` 訪問(wèn):
>>> a = 10 + 20
>>> _
30
```
當(dāng)然也可以定義成普通的變量名:
last_result = _
print(last_result)
前置和后置單一下劃線
以單個(gè)前置或后置下滑桿開(kāi)頭/結(jié)尾時(shí),則指示該名稱具有特殊含義。
- _xxx: 單個(gè)下劃線開(kāi)頭表示這是一個(gè)非公共方法或?qū)傩浴?/p>
- xxx_: 單個(gè)下滑桿結(jié)尾表明它與Python關(guān)鍵字有所區(qū)別。
在編寫(xiě)類時(shí),前置單一下劃線的名稱通常用于指示該方法或?qū)傩允恰八接小钡?。例如?/p>
class MyClass:
def __init__(self):
self._private_var = 42
def _private_method(self):
return 'Hello, world!'
上面代碼中,我們?yōu)閌_private_var`和`_private_method()`添加了前置單一下劃線。這并沒(méi)有真正地使它們成為私有成員變量和函數(shù),但是建議不要從外部訪問(wèn)這些變量。
雙前置/后綴下劃線
以兩個(gè)前置或后綴符號(hào)開(kāi)頭/結(jié)尾的名稱具有特殊含義。如果你想定義一個(gè)名字與Python保留關(guān)鍵字相同的變量(例如 `lambda`, `class`, `yield`),則可以使用雙拖鞋來(lái)避免沖突。
此外,在類定義中還可以使用以下形式:
- \_\_xxx:雙前導(dǎo)下滑桿會(huì)導(dǎo)致Python解釋器重寫(xiě)屬性名稱,以避免子類意外覆蓋父類中包含的屬性。
- xxx\_\_: 雙后綴符號(hào)被稱為“魔術(shù)”方法(magic methods),因?yàn)樗鼈兲峁┝藢?shí)現(xiàn)對(duì)象的特殊行為的機(jī)會(huì)。
例如,我們可以使用雙前置下劃線來(lái)避免變量名與Python關(guān)鍵字沖突:
self.__lambda = 42
obj = MyClass()
print(obj._MyClass__lambda) # 輸出42
上面代碼中,我們?cè)赻__init__()`方法中定義了一個(gè)名為`__lambda`的實(shí)例變量。但是由于雙前綴下劃線,該變量被重命名為`_MyClass_lambda`, 我們通過(guò)這個(gè)新名稱訪問(wèn)它。
盡管看起來(lái)有些神秘和復(fù)雜,但Python中的下劃線其實(shí)很簡(jiǎn)單易懂。只需要理解每種用法背后的含義,并根據(jù)需要靈活運(yùn)用即可。
希望本文能夠?qū)δ愀钊氲亓私膺@個(gè)常見(jiàn)符號(hào)有所幫助!
網(wǎng)站題目:Python中的下劃線:解密這個(gè)神秘符號(hào)
標(biāo)題URL:http://fisionsoft.com.cn/article/dpddgjp.html


咨詢
建站咨詢
