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: 內層函數(在局部作用域)引入外層離他最近的那個變量.
評論帖子的代碼:
python之路---10 *args **kwargs 命名空間 作用域 函數的嵌套