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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP