Python中下劃線的變數是什麼個意思

2021-10-01 09:03:49 字數 4658 閱讀 2590

這篇文章說兩個問題:

問一:下劃線變數

單下劃線開頭的變數,pyhthon規定為內部變數(私有變數),from m import * 時,這種變數並不會匯入進來,例如:

[python] 純文字檢視

複製** ?

0102

03

04

05

06

07

08

09

10

11

12

13

foo.py

#foo.py

bar=10

bar2=11

_bar=20

__bar=30

foo2.py

#foo2.py

fromfooimport*

if__name__=='__main__':

printlocals()

執行 python foo2.py,輸出:

[python] 純文字檢視

複製** ?

1

輸入結果中並沒有 _bar和__bar,因為它們都是以下劃線開頭的變數,所以沒有匯入進來,但是如果你非要把這些變數匯入進來也是可以的,使用import時,明確匯入具體的變數時就行了。如:

[python] 純文字檢視

複製** ?

12

3

4

5

6

#foo2.py

fromfooimport*

fromfooimport_bar

fromfooimport__bar

if__name__=='__main__':

printlocals()

輸出:[python] 純文字檢視

複製** ?

1

單下劃線結尾的變數:用於避免於python關鍵字衝突的變數,如class_:

tkinter.toplevel(master, class_='classname')

如上所說的變數講的是定義在模組中的變數,屬於模組中的屬性,如果這些變數定義在函式裡面,那它和普通的變數沒什麼兩樣的,都是區域性變數。此外,單下劃線同樣適用於函式。

雙下劃線開頭的變數:它在模組中還是當作單下劃線看待,但出現在類中作為類屬性就不一樣了,在執行時該類屬性會被「混淆",不能直接訪問,需要在該變數前加上下劃線和類名才能訪問。如:

[python] 純文字檢視

複製** ?

0102

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

classfoo(object):

boo=40

_boo=50

__boo=60# _foo__boo

def__init__(self):

self.__booo=70

def__test(self):#_foo__test

print"__test"

if__name__=='__main__':

printfoo.boo

printfoo._boo

printfoo._foo__boo

foo=foo()

printfoo._foo__booo

foo._foo__test()

這樣可以防止與父類或子類中同名的__***屬性發生衝突。

開始和結尾都有的雙下劃線的變數:此類變數屬於魔法物件,如:init,file,你永遠不要自己也發明個出來。

問二:all

__all__物件是裝有字串的列表物件,他會覆蓋 from import * 的預設行為:如

[python] 純文字檢視

複製** ?

0102

03

04

05

06

07

08

09

10

11

12

13

#foo.py

__all__=['bar','baz']

waz=5

bar=10

defbaz():return'baz'

fromfooimport*

printbar

printbaz

# 異常

printwaz

在foo.py裡面定義了__all__後,import * 就會按照 __all__定義的內容匯入,所以這裡 print waz就拋異常了,因為它不在 __all__裡面。為外,你可以把下劃線開頭的變數的字串形式加入到__all__中,這樣 import * 也能看到這些變數。

Python中下劃線說明

在python中經常看到方法或者變數前帶有下劃線,稍作解釋。1.前後雙下劃線 mtthod 這一般是系統定義的特殊方法,類似於類的構造方法 init 2.前單下劃線 以單下劃線開頭的變數指的是變數的許可權型別為protected,即是保護許可權的變數,該型別的變數只能通過其本身及子類的例項物件能夠訪...

python中下劃線 的用途

python 用下劃線作為變數字首和字尾指定特殊變數。不能用 from module import 匯入 系統定義名字 類中的私有變數名 核心風格 避免用下劃線作為變數名的開頭。因為下劃線對直譯器有特殊的意義,而且是內建識別符號所使用的符號,我們建議程式設計師避免用下劃線作為變數名的開頭。一般來講,...

Python中下劃線含義詳解

格式例子作用及含義單下劃線開頭 var僅供內部使用,通常不會有python直譯器強制執行末尾單下劃線var 單個末尾下劃線 字尾 是乙個約定,用來避免與python關鍵字產生命名衝突。雙下劃線開頭 var當在類上下文使用時,觸發 名詞修飾 由python直譯器強制執行雙下劃線開頭和結尾 var py...