一文詳細聊一聊Python中的下劃線“_”們
前言
隨便拿一份Python代碼,幾乎都可以看到很多“_”的身影。
在Python中,下劃線(_)有多種用途和含義,具體取決于它們的位置和使用方式。在這里都列舉出來方便大家對照查看:
1. __xxx__(雙下劃線前后)
這種形式通常用于特殊方法和屬性,也稱為“魔法方法”或“雙下劃線方法”。這些方法和屬性是Python內置的,具有特殊的含義和用途。例如:
__init__:類的初始化方法。__str__:返回對象的字符串表示形式。__len__:返回對象的長度。__add__:定義對象的加法行為。
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(單下劃線前綴)
單下劃線前綴通常用于表示內部變量或方法,提示開發(fā)者這些變量或方法是內部實現的一部分,不應該直接訪問或修改。這是一種命名約定,并不會真正限制訪問。
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關鍵字沖突。例如,如果你有一個變量名與Python關鍵字沖突,可以使用單下劃線后綴來避免沖突。
class_ = "MyClass" print(class_) # 輸出: MyClass
4. __xxx(雙下劃線前綴)
雙下劃線前綴會觸發(fā)名稱修飾(name mangling),將變量或方法名修改為_ClassName__xxx,以避免子類意外覆蓋父類的私有變量或方法。這種方式提供了一種弱的“私有”機制。
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. _(單下劃線)
單下劃線通常用作臨時變量或忽略變量的占位符。例如,在循環(huán)中忽略循環(huán)變量,或在解包時忽略某些值。
for _ in range(5):
print("Hello")
a, _, c = (1, 2, 3)
print(a, c) # 輸出: 1 36. __(雙下劃線)
雙下劃線通常不單獨使用,但在某些情況下可能會出現在特殊方法或屬性中。例如,__all__用于定義模塊的公共接口。
__all__ = ["MyClass", "my_function"]
7. _xxx_(單下劃線前后)
這種形式通常不常見,但有時用于表示內部變量或方法,類似于單下劃線前綴。
class MyClass:
def __init__(self, value):
self._value_ = value
def get_value(self):
return self._value_
obj = MyClass(10)
print(obj._value_) # 輸出: 10總結
__xxx__:特殊方法和屬性。_xxx:內部變量或方法。xxx_:避免與Python關鍵字沖突。__xxx:名稱修飾,提供弱的“私有”機制。_:臨時變量或忽略變量的占位符。__:通常不單獨使用,但在特殊方法或屬性中可能出現。_xxx_:內部變量或方法,類似于單下劃線前綴。
順便提一下其他的除了運算符以外的常見符號:
# 注釋
a = [1, 2, 3] # 列表
b = (1, 2, 3) # 元組
c = {1, 2, 3} # 集合
d = {'a': 1, 'b': 2} # 字典
# 函數調用
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ù)行符@:裝飾器::用于切片、字典鍵值對、函數定義、類定義等.:屬性訪問,:元組和參數分隔符;:語句分隔符(通常不推薦使用)():元組、函數調用、優(yōu)先級[]:列表、索引、切片{}:字典、集合|:集合并集&:集合交集-:集合差集^:集合對稱差集
到此這篇關于Python中下劃線_們的文章就介紹到這了,更多相關Python的下劃線內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
淺談tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意點
這篇文章主要介紹了淺談tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意點,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06

