image

三種命名空間

(1)Built-in Namespace(內置命名空間)

(2)Module:Global Namespace(全域)

(3)Function:Local Namespace

 

(一)Built-in Namespace(內置命名空間)

只要python的直譯器一啟用就能使用
例如:print

(二)Module:Global Namespace(全域)

function

(三)Function:Local Namespace(區域) 

例如:def內的命名

 

二、LEGB

L:local
E:enclosed(有雙層function時)
G:global
B:built-in

三、範圍scope

     查找namespace的空間與權限,主要依照LEGB的范未來尋找。先從自己的範圍找,如果沒有的話,接著一直往上直到找到為止。

*低層級的,對於高層,只能讀取,不能寫入。

好處:在最高層級,如果先設定好變數,低層無法改變高層的值。

特例

    但以下得兩個方式,很少人使用,甚至不推薦使用。因為這樣會誤導人,所以變數命名盡量不要相同。

(1)如果再local想要改變global的值,可以在前一行寫global+變數。

(2)此用nonlocal的語法來改變。

 

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 戰昇 的頭像
    戰昇

    戰昇的部落格

    戰昇 發表在 痞客邦 留言(0) 人氣()