(十五)名稱空間與作用域
阿新 • • 發佈:2018-05-17
名稱 CA str local int print 銷毀 oba 關閉
名稱空間和作用域
- 名稱空間(namespace) 是存放名字與值綁定關系的地方
- 分類:
- 內置名稱空間
存放python解釋器內置名字,比如內置函數名:len, max,sum.
創建:隨著python解釋器的啟動而創建
銷毀:隨著python解釋器的關閉而銷毀
全局名稱空間
存放文件級別的名稱,比如x=1 def f1(): x=1 if x==1:
創建: 文件開始執行時
銷毀:文件執行完畢時
- 局部名稱空間
存放函數內的名字,需要強調的是函數的參數也屬於局部的
創建:函數執行時才臨時創建
銷毀:函數執行完畢則立即銷毀。
def f1()
x=1
f1()
- 名稱空間的加載順序
內置名稱空間--》全局名稱空間--》局部名稱空間
- 名稱空間的查找名字順序
局部名稱空間--》全局名稱空間--》內置名稱空間
按照順序依次註釋掉len,看實驗效果。
len=10 5. def f1(): len=100 3. def f2(): len=1000 2. def f3(): len=10000 1. print(len) f3() f2() len=1111111111 4 f1()
- 名字的查找關系在函數定義階段
- global只能改全局的
nolocal 會從當前層的外一層開始查找,一直找到最外層的函數
(十五)名稱空間與作用域