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: 內層函式(在區域性作用域)引入外層離他最近的那個變數.
評論帖子的程式碼: