1. 程式人生 > >(十五)名稱空間與作用域

(十五)名稱空間與作用域

名稱 CA str local int print 銷毀 oba 關閉

名稱空間和作用域

  1. 名稱空間(namespace) 是存放名字與值綁定關系的地方
  2. 分類:
  • 內置名稱空間
    存放python解釋器內置名字,比如內置函數名:len, max,sum.

創建:隨著python解釋器的啟動而創建

銷毀:隨著python解釋器的關閉而銷毀

  • 全局名稱空間
    存放文件級別的名稱,比如

    x=1
    def f1():
    x=1
    if x==1:

    創建: 文件開始執行時

銷毀:文件執行完畢時

  • 局部名稱空間
    存放函數內的名字,需要強調的是函數的參數也屬於局部的

創建:函數執行時才臨時創建
銷毀:函數執行完畢則立即銷毀。

def f1()
    x=1
f1()
  1. 名稱空間的加載順序

內置名稱空間--》全局名稱空間--》局部名稱空間

  1. 名稱空間的查找名字順序

局部名稱空間--》全局名稱空間--》內置名稱空間

按照順序依次註釋掉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()
  1. 名字的查找關系在函數定義階段
  2. global只能改全局的
    nolocal 會從當前層的外一層開始查找,一直找到最外層的函數

(十五)名稱空間與作用域