一文詳細(xì)聊一聊Python中的下劃線“_”們
前言
隨便拿一份Python代碼,幾乎都可以看到很多“_”的身影。
在Python中,下劃線(_
)有多種用途和含義,具體取決于它們的位置和使用方式。在這里都列舉出來(lái)方便大家對(duì)照查看:
1. __xxx__(雙下劃線前后)
這種形式通常用于特殊方法和屬性,也稱為“魔法方法”或“雙下劃線方法”。這些方法和屬性是Python內(nèi)置的,具有特殊的含義和用途。例如:
__init__
:類的初始化方法。__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 10
2. _xxx(單下劃線前綴)
單下劃線前綴通常用于表示內(nèi)部變量或方法,提示開發(fā)者這些變量或方法是內(nèi)部實(shí)現(xiàn)的一部分,不應(yīng)該直接訪問或修改。這是一種命名約定,并不會(huì)真正限制訪問。
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) # 輸出: 10
3. xxx_(單下劃線后綴)
單下劃線后綴通常用于避免與Python關(guān)鍵字沖突。例如,如果你有一個(gè)變量名與Python關(guān)鍵字沖突,可以使用單下劃線后綴來(lái)避免沖突。
class_ = "MyClass" print(class_) # 輸出: MyClass
4. __xxx(雙下劃線前綴)
雙下劃線前綴會(huì)觸發(fā)名稱修飾(name mangling),將變量或方法名修改為_ClassName__xxx
,以避免子類意外覆蓋父類的私有變量或方法。這種方式提供了一種弱的“私有”機(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. _(單下劃線)
單下劃線通常用作臨時(shí)變量或忽略變量的占位符。例如,在循環(huán)中忽略循環(huán)變量,或在解包時(shí)忽略某些值。
for _ in range(5): print("Hello") a, _, c = (1, 2, 3) print(a, c) # 輸出: 1 3
6. __(雙下劃線)
雙下劃線通常不單獨(dú)使用,但在某些情況下可能會(huì)出現(xiàn)在特殊方法或?qū)傩灾?。例如?code>__all__用于定義模塊的公共接口。
__all__ = ["MyClass", "my_function"]
7. _xxx_(單下劃線前后)
這種形式通常不常見,但有時(shí)用于表示內(nèi)部變量或方法,類似于單下劃線前綴。
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
:名稱修飾,提供弱的“私有”機(jī)制。_
:臨時(shí)變量或忽略變量的占位符。__
:通常不單獨(dú)使用,但在特殊方法或?qū)傩灾锌赡艹霈F(xiàn)。_xxx_
:內(nèi)部變量或方法,類似于單下劃線前綴。
順便提一下其他的除了運(yù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ù)定義、類定義等.
:屬性訪問,
:元組和參數(shù)分隔符;
:語(yǔ)句分隔符(通常不推薦使用)()
:元組、函數(shù)調(diào)用、優(yōu)先級(jí)[]
:列表、索引、切片{}
:字典、集合|
:集合并集&
:集合交集-
:集合差集^
:集合對(duì)稱差集
到此這篇關(guān)于Python中下劃線_們的文章就介紹到這了,更多相關(guān)Python的下劃線內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
keras實(shí)現(xiàn)多GPU或指定GPU的使用介紹
這篇文章主要介紹了keras實(shí)現(xiàn)多GPU或指定GPU的使用介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06python編程開發(fā)之textwrap文本樣式處理技巧
這篇文章主要介紹了python編程開發(fā)之textwrap文本樣式處理技巧,實(shí)例分析了Python中textwrap的常用方法與處理文本樣式的相關(guān)使用技巧,需要的朋友可以參考下2015-11-11Python實(shí)現(xiàn)按照指定要求逆序輸出一個(gè)數(shù)字的方法
這篇文章主要介紹了Python實(shí)現(xiàn)按照指定要求逆序輸出一個(gè)數(shù)字的方法,涉及Python針對(duì)字符串的遍歷、判斷、輸出等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04python深度學(xué)習(xí)tensorflow實(shí)例數(shù)據(jù)下載與讀取
這篇文章主要為大家介紹了python深度學(xué)習(xí)tensorflow實(shí)例數(shù)據(jù)下載與讀取示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06利用Python構(gòu)建Flutter應(yīng)用的教程詳解
Flutter在軟件研發(fā)領(lǐng)域是非常流行的,今天就讓我們深入了解一下,用?Python構(gòu)建flutter應(yīng)用程序的世界,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12python使用PySimpleGUI設(shè)置進(jìn)度條及控件使用
PySimpleGUI是一個(gè)在tkinter基礎(chǔ)上的,足夠簡(jiǎn)單,方便,pythonic的GUI庫(kù).本文給大家介紹python使用PySimpleGUI設(shè)置進(jìn)度條的方法及進(jìn)度條控件使用代碼,感興趣的朋友跟隨小編一起看看吧2021-06-06使用python獲取CPU和內(nèi)存信息的思路與實(shí)現(xiàn)(linux系統(tǒng))
這篇文章主要介紹了python獲取CPU和內(nèi)存信息的思路與實(shí)現(xiàn),有需要的朋友可以參考一下2014-01-01Python實(shí)現(xiàn)在不同坐標(biāo)系中繪制曲線
這篇文章主要為大家學(xué)習(xí)介紹了Python如何實(shí)現(xiàn)在不同坐標(biāo)系中繪制曲線,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-07-07