三種命名空間
(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的語法來改變。
全站熱搜
留言列表