1. 程式人生 > >python之路---10 *args **kwargs 名稱空間 作用域 函式的巢狀

python之路---10 *args **kwargs 名稱空間 作用域 函式的巢狀

二十八.函式進階

  1.   "*"  和  "**"

    ① 在形參位置時   都是聚合的作用    

      *args    位置引數→元組

      **kwargs   關鍵字引數→字典

    混合時順序為: 位置  , *args ,  預設值 , **kwargs

    ② 在實參位置時    都是打散的作用

      *args      字串,元組,字典 → 位置引數

      **kwargs     字典 → 關鍵字引數

  2.名稱空間    用來存放名字(變數, 函式名, 類名, 引入的模組名)的

      1. 全域性名稱空間: 我們在py檔案中自己寫的變數, 函式.....

      2. 內建名稱空間: 我們python直譯器提供好的一些內建內容(print, input....)

       3. 區域性名稱空間: 在我們執行函式的時候.會產生一個區域性名稱空間.

                放的是: 函式內部的內容(變數, 函式,類...)

    名稱空間可能會有無數個, 區域性名稱空間而言. 相對是獨立的.一般互不干擾

  3.作用域

    1). 全域性作用域: 內建+全域性     

    2). 區域性作用域: 區域性

    3).  從全域性去找區域性 -> 找不到

       區域性去找全域性 -> 可以找到

    4).  globals() 檢視全域性作用域

       locals() 檢視當前作用域

  4.函式的巢狀

    1).查詢順序: 先找自己 -> 上一層 -> 上一層..全域性 -> 內建

    2).global: 在 區域性 引入 全域性 的一個變數

    3).nonlocal: 內層函式(在區域性作用域)引入外層離他最近的那個變數.

評論帖子的程式碼: