1. 程式人生 > 其它 >含下劃線_變數名的涵義

含下劃線_變數名的涵義

_XXX

一般來講,變數名_xxx被看作是“私有的”,在模組或類外不可以使用。
保護變數,意思是隻有類物件和自類物件自己能訪問到這些變數。

例:以單下劃線開頭(_foo)變數需通過類提供的介面進行訪問,不能用“from xxx import *”而匯入。

class Test:
def __init__(self):
    
    self._foo = 23

t = Test()
# 依然可以進入類並訪問該變數
t._foo
output: 23
# my_module.py:
 
def external_func():
   return 23
 
def _internal_func():
   return 42
# main.py
# 萬用字元匯入
from my_module import *
external_func()
_internal_func()

output:
23
NameError: "name '_internal_func' is not defined"

常規匯入

>>> import my_module
>>> my_module.external_func()
23
>>> my_module._internal_func()
42

XXX_

當一個變數的最合適的名稱已經被一個關鍵字所佔用。因此,像class或def這樣的名稱不能用作Python中的變數名稱。在這種情況下,可附加一個下劃線來解決命名衝突:

>>> def make_object(name, class):
SyntaxError: "invalid syntax"
>>> def make_object(name, class_):
...    pass

雙前導和雙末尾下劃線 XXX

由雙下劃線字首和字尾包圍的變數不會被Python直譯器修改