先看前面兩種
通常我們定義變量或者方法是使用的是英文。
當(dāng)我們看到有些變量名使用下劃線的時候,其實(shí)看起來是在一些特殊情況。
單個下劃線前綴有約定俗成的含義。 它只是一個提示
下劃線前綴的含義是告知程序開發(fā)者:
以單個下劃線開頭的變量或方法僅供內(nèi)部使用。 該約定在PEP 8中有定義。
它只是一個提示告知跳空高開建議,但是你依舊可以無視這個建議。
請注意:Python不像Java那樣在"私有"和"公共"變量之間有很強(qiáng)的區(qū)別。 這就像有人提出了一個小小的下劃線警告標(biāo)志
:
class Test:
def __init__(self):
self.foo = 11
self._bar = 23
獲取的foo和_bar屬性, 是正常的。但是不建議直接使用 _bar這個屬性。
>>> t = Test()
>>> t.foo
11
>>> t._bar
23
假設(shè)你在一個名為my_module的模塊中有以下代碼:
def external_func():
return 23
def _internal_func():
return 42
Python不會導(dǎo)入帶有前導(dǎo)下劃線的名稱
除非模塊定義了覆蓋此行為的__all__列表
>>> from my_module import *
>>> external_func()
23
>>> _internal_func()
NameError: "name '_internal_func' is not defined"
需要提醒 一下,建議不要使用 from modulename import * 這種一股腦的方式導(dǎo)入,按需要導(dǎo)入是一種正確的方式
import modulename也可心正常使用 下劃線開關(guān)的方法
>>> import my_module
>>> my_module.external_func()
23
>>> my_module._internal_func()
42
有時候Python的保留關(guān)鍵字是不能用作變量名的,例如class或def這樣的名稱
不能用作Python中的變量名稱。 可以附加一個下劃線來解決命名沖突:
>>> def make_object(name, class):
SyntaxError: "invalid syntax"
>>> def make_object(name, class_):
... pass
聯(lián)系客服