Python 變數名前加單下劃線是什麼意思?


Python 變數名可以以單下劃線開頭。這是一種約定,表示該變數名是私有變數。它應該被視為隨時可能更改的實現細節。程式設計師可以認為用單下劃線標記的變數是保留供內部使用的。

建議使用單下劃線表示半私有變數,使用雙下劃線表示完全私有變數。

引用 PEP-8;單下劃線開頭:表示“內部使用”的較弱訊號。例如,`from M import *` 會排除名稱以下劃線開頭的物件。

語法

在 Python 變數名前使用單下劃線的語法如下:

_name

示例 1

在下面的例子中,透過在 buzz 變數前新增單下劃線,將其設定為私有。這種方法仍然允許我們在例項化此類的物件並嘗試訪問 _buzz 變數時訪問 _buzz 變數。因此,這被稱為“弱私有指示”。

class Python: def __init__(self): self.fee = 37 self._buzz = 76 object = Python() print(object.fee) print(object._buzz)

輸出

以下是上述程式碼的輸出:

37 
76

示例 2

以下是單下劃線開頭 (_v) 的示例:

class Sports: def __init__(self): self.name = 'Cricket' self._player = 'Sachin Tendulkar'

輸出

以下是上述程式碼的輸出,我們嘗試訪問“name”和“player”:

>>> s = Sports()
>>> s.name
'Cricket'
>>> s._player
'Sachin Tendulkar'

注意 - 單下劃線不會阻止訪問單下劃線開頭的變數。但是,單下劃線會影響從模組匯入的名稱。

示例 3

在 untitled.py 檔案中編寫以下程式碼:

# The file name is ‘untitled.py’ def function(): return "programming" def _private_function(): return 35

輸出

如果您從 untitled.py 匯入所有方法和名稱,Python 不會匯入以單下劃線開頭的名稱。

以下是上述程式碼的輸出:

>>> from untitled import *
>>> function()
'programming'
>>> _private_function()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '_private_function' is not defined

應正常匯入模組以避免上述錯誤:

>>> import untitled
>>> untitled.function()
'programming'
>>> untitled._private_function()
35

注意 - 單下劃線僅用於內部使用。

示例 4

以下程式碼演示了雙下劃線和單下劃線字首的區別。

class Python(): def __init__(self): self.__FullPrivate = "Coding" self._SemiPrivate = "Programs" p = Python() print ('p._SemiPrivate') print ('p.__FullPrivate')

輸出

以下是上述程式碼的輸出:

p._SemiPrivate
p.__FullPrivate

更新於:2022-11-23

5K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.