Python:函數名稱空間與範圍:

來源:互聯網
上載者:User

標籤:定義   foo   解析   層級   類型   注意   oba   順序   一個   

Python:函數名稱空間與範圍函數對象:(第一類對象)

  定義:函數是第一類對象:函數名可以當做資料來使用

        1.可以直接被引用,加()就能運行        def foo():            print("from foo")        f=foo        f()                2.可以當作參數傳入另一個函數        def warpper(x):            x()                    warpper(foo)                3.可以當作另外函數的傳回值        def warpper2():            return foo                f=warpper2()        print(f is foo)                4.可以當作容器類型的一個元素        l=[foo,1,2]        l[0]()        

 

 名稱空間:

  定義:存放名字與值綁定關係的地方(實際上是一塊隔離的記憶體空間)

  分類:   

    內建名稱空間:
        存放的是:內建的名字與值的綁定關係
        生效:python解析器啟動
        失效:python解析器關閉

    全域名稱空間:
        存放的是:檔案層級定義的名字與值的綁定
        生效:執行python檔案時,以該檔案層級定義的名字與值的綁定關係
        失效:檔案執行完畢

    局部名稱空間:
        存放的是:函數內部定義的名字與值的綁定關係
        生效:調用函數時,臨時生效
        失效:函數調用結束

    

    載入順序:先內資,再全域,最後局部
    尋找順序:先局部,再全域, 最後內建

 

範圍:    

  注意:範圍關係,在函數定義時,就已經固定了,與調用位置無關。
            使用函數對象可以打破作於域的層級關係。
    

    全域範圍:包含內建名稱空間與全域名稱空間。
    全域存活,全域生效
        globals(),顯示全域範圍中的名字對應關係

 

 

               局部範圍:包含局部名稱空間
     臨時存活,局部生效
                             locals(),顯示當前局部範圍中的名字對應關係

    相關關鍵字:都是在函數內部使用

                         global 申明使用全域範圍中的名字
          nonlocal 申明不使用的本級局部範圍中的名稱

Python:函數名稱空間與範圍:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.