一文詳細(xì)聊一聊Python中的下劃線“_”們
前言
隨便拿一份Python代碼,幾乎都可以看到很多“_”的身影。
在Python中,下劃線(_)有多種用途和含義,具體取決于它們的位置和使用方式。在這里都列舉出來方便大家對(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 102. _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) # 輸出: 103. xxx_(單下劃線后綴)
單下劃線后綴通常用于避免與Python關(guān)鍵字沖突。例如,如果你有一個(gè)變量名與Python關(guān)鍵字沖突,可以使用單下劃線后綴來避免沖突。
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 36. __(雙下劃線)
雙下劃線通常不單獨(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ù)分隔符;:語句分隔符(通常不推薦使用)():元組、函數(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ì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python編程開發(fā)之textwrap文本樣式處理技巧
這篇文章主要介紹了python編程開發(fā)之textwrap文本樣式處理技巧,實(shí)例分析了Python中textwrap的常用方法與處理文本樣式的相關(guān)使用技巧,需要的朋友可以參考下2015-11-11
Python實(shí)現(xiàn)按照指定要求逆序輸出一個(gè)數(shù)字的方法
這篇文章主要介紹了Python實(shí)現(xiàn)按照指定要求逆序輸出一個(gè)數(shù)字的方法,涉及Python針對(duì)字符串的遍歷、判斷、輸出等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04
python深度學(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-12
python使用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-01
Python實(shí)現(xiàn)在不同坐標(biāo)系中繪制曲線
這篇文章主要為大家學(xué)習(xí)介紹了Python如何實(shí)現(xiàn)在不同坐標(biāo)系中繪制曲線,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-07-07

