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