1. 程式人生 > >python之路---10 *args **kwargs 命名空間 作用域 函數的嵌套

python之路---10 *args **kwargs 命名空間 作用域 函數的嵌套

全局 alt img 分享圖片 inf 聚合 glob 類名 引入

二十八.函數進階

  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: 內層函數(在局部作用域)引入外層離他最近的那個變量.

評論帖子的代碼:

技術分享圖片

python之路---10 *args **kwargs 命名空間 作用域 函數的嵌套