一文詳細(xì)聊一聊Python中的下劃線(xiàn)“_”們
前言
隨便拿一份Python代碼,幾乎都可以看到很多“_”的身影。
在Python中,下劃線(xiàn)(_)有多種用途和含義,具體取決于它們的位置和使用方式。在這里都列舉出來(lái)方便大家對(duì)照查看:
1. __xxx__(雙下劃線(xiàn)前后)
這種形式通常用于特殊方法和屬性,也稱(chēng)為“魔法方法”或“雙下劃線(xiàn)方法”。這些方法和屬性是Python內(nèi)置的,具有特殊的含義和用途。例如:
__init__:類(lèi)的初始化方法。__str__:返回對(duì)象的字符串表示形式。__len__:返回對(duì)象的長(zhǎng)度。__add__:定義對(duì)象的加法行為。
class MyClass:
def __init__(self, value):
self.value = value
def __str__(self):
return f"MyClass with value {self.value}"
obj = MyClass(10)
print(obj)
# 輸出: MyClass with value 102. _xxx(單下劃線(xiàn)前綴)
單下劃線(xiàn)前綴通常用于表示內(nèi)部變量或方法,提示開(kāi)發(fā)者這些變量或方法是內(nèi)部實(shí)現(xiàn)的一部分,不應(yīng)該直接訪(fǎng)問(wèn)或修改。這是一種命名約定,并不會(huì)真正限制訪(fǎng)問(wèn)。
class MyClass:
def __init__(self, value):
self._internal_value = value
def get_value(self):
return self._internal_value
obj = MyClass(10)
print(obj._internal_value) # 輸出: 103. xxx_(單下劃線(xiàn)后綴)
單下劃線(xiàn)后綴通常用于避免與Python關(guān)鍵字沖突。例如,如果你有一個(gè)變量名與Python關(guān)鍵字沖突,可以使用單下劃線(xiàn)后綴來(lái)避免沖突。
class_ = "MyClass" print(class_) # 輸出: MyClass
4. __xxx(雙下劃線(xiàn)前綴)
雙下劃線(xiàn)前綴會(huì)觸發(fā)名稱(chēng)修飾(name mangling),將變量或方法名修改為_ClassName__xxx,以避免子類(lèi)意外覆蓋父類(lèi)的私有變量或方法。這種方式提供了一種弱的“私有”機(jī)制。
class MyClass:
def __init__(self, value):
self.__private_value = value
def get_value(self):
return self.__private_value
obj = MyClass(10)
print(obj._MyClass__private_value) # 輸出: 10
5. _(單下劃線(xiàn))
單下劃線(xiàn)通常用作臨時(shí)變量或忽略變量的占位符。例如,在循環(huán)中忽略循環(huán)變量,或在解包時(shí)忽略某些值。
for _ in range(5):
print("Hello")
a, _, c = (1, 2, 3)
print(a, c) # 輸出: 1 36. __(雙下劃線(xiàn))
雙下劃線(xiàn)通常不單獨(dú)使用,但在某些情況下可能會(huì)出現(xiàn)在特殊方法或?qū)傩灾?。例如?code>__all__用于定義模塊的公共接口。
__all__ = ["MyClass", "my_function"]
7. _xxx_(單下劃線(xiàn)前后)
這種形式通常不常見(jiàn),但有時(shí)用于表示內(nèi)部變量或方法,類(lèi)似于單下劃線(xiàn)前綴。
class MyClass:
def __init__(self, value):
self._value_ = value
def get_value(self):
return self._value_
obj = MyClass(10)
print(obj._value_) # 輸出: 10總結(jié)
__xxx__:特殊方法和屬性。_xxx:內(nèi)部變量或方法。xxx_:避免與Python關(guān)鍵字沖突。__xxx:名稱(chēng)修飾,提供弱的“私有”機(jī)制。_:臨時(shí)變量或忽略變量的占位符。__:通常不單獨(dú)使用,但在特殊方法或?qū)傩灾锌赡艹霈F(xiàn)。_xxx_:內(nèi)部變量或方法,類(lèi)似于單下劃線(xiàn)前綴。
順便提一下其他的除了運(yùn)算符以外的常見(jiàn)符號(hào):
# 注釋
a = [1, 2, 3] # 列表
b = (1, 2, 3) # 元組
c = {1, 2, 3} # 集合
d = {'a': 1, 'b': 2} # 字典
# 函數(shù)調(diào)用
def my_function(x):
return x + 1
print(my_function(5)) # 輸出: 6
# 切片
print(a[1:3]) # 輸出: [2, 3]
# 集合操作
e = {3, 4, 5}
print(c | e) # 輸出: {1, 2, 3, 4, 5}
print(c & e) # 輸出: {3}
print(c - e) # 輸出: {1, 2}
print(c ^ e) # 輸出: {1, 2, 4, 5}
#:注釋\:續(xù)行符@:裝飾器::用于切片、字典鍵值對(duì)、函數(shù)定義、類(lèi)定義等.:屬性訪(fǎng)問(wèn),:元組和參數(shù)分隔符;:語(yǔ)句分隔符(通常不推薦使用)():元組、函數(shù)調(diào)用、優(yōu)先級(jí)[]:列表、索引、切片{}:字典、集合|:集合并集&:集合交集-:集合差集^:集合對(duì)稱(chēng)差集
到此這篇關(guān)于Python中下劃線(xiàn)_們的文章就介紹到這了,更多相關(guān)Python的下劃線(xiàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python抓取靜態(tài)網(wǎng)頁(yè)數(shù)據(jù)的完整指南
靜態(tài)網(wǎng)頁(yè)是指網(wǎng)頁(yè)的內(nèi)容在服務(wù)器上被創(chuàng)建和存儲(chǔ)時(shí)就已經(jīng)完全確定好了,本文將和大家詳細(xì)講講如何使用Python抓取靜態(tài)網(wǎng)頁(yè)數(shù)據(jù),感興趣的小伙伴可以了解下2025-11-11
在Django中創(chuàng)建自己的自定義用戶(hù)模型
這篇文章主要介紹了在Django中創(chuàng)建自己的自定義用戶(hù)模型,創(chuàng)建自己的自定義用戶(hù)模型至關(guān)重要。將來(lái),如果要對(duì)模型進(jìn)行一些更改,則可以輕松進(jìn)行這些更改。不然我們可能必須對(duì)模型進(jìn)行一些更改,而且代碼的某些部分也將被更改,下面一起進(jìn)入文章里哦阿姐個(gè)表格的詳細(xì)內(nèi)容吧2022-01-01
教你學(xué)會(huì)通過(guò)python的matplotlib庫(kù)繪圖
今天教大家如何學(xué)會(huì)通過(guò)python的matplotlib庫(kù)繪圖,文中有非常詳細(xì)的圖文解說(shuō)及代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05
Python面向?qū)ο笾^承和組合用法實(shí)例分析
這篇文章主要介紹了Python面向?qū)ο笾^承和組合用法,結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中組合與繼承的相關(guān)原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2018-08-08
關(guān)于opencv讀取和寫(xiě)入路徑有漢字的處理方式
這篇文章主要介紹了關(guān)于opencv讀取和寫(xiě)入路徑有漢字的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
Python通過(guò)PyMuPDF高效處理PDF文檔的操作方法
PyMuPDF(又稱(chēng) fitz)是一個(gè)功能強(qiáng)大的Python庫(kù),用于處理PDF、XPS、EPUB、MOBI等文檔格式,它基于MuPDF(輕量級(jí) PDF 渲染引擎),提供高效的文本提取、渲染、編輯和文檔分析功能,所以本文給大家介紹了Python通過(guò)PyMuPDF高效處理PDF文檔的操作方法2025-11-11
淺談tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意點(diǎn)
這篇文章主要介紹了淺談tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06

