10、函數進階---命名空間
阿新 • • 發佈:2018-12-05
什麽 名字空間 舉例 int oca font 內置模塊 範圍 全局變量 又名name space, 顧名思義就是存放名字的地方,存什麽名字呢?舉例說明,若變量x=1,1存放於內存中,那名字x存放在哪裏呢?名稱空間正是存放名字x與1綁定關系的地方
名稱空間共3種,分別如下
- locals: 是函數內的名稱空間,包括局部變量和形參
- globals: 全局變量,函數定義所在模塊的名字空間
- builtins: 內置模塊的名字空間
- 全局範圍:全局存活,全局有效
- 局部範圍:臨時存活,局部有效
level = ‘L0‘ n = 22 def func(): level = ‘L1‘ n = 33 print(locals()) def outer(): n = 44 level = ‘L2‘ print(locals(),n) def inner(): level = ‘L3‘ print(locals(),n) #此外打印的n是多少? inner() outer() func()
問題:在inner()裏的打印的n的值是多少? LEGB 代表名字查找順序: locals -> enclosing function -> globals -> __builtins__
- locals 是函數內的名字空間,包括局部變量和形參
- enclosing 外部嵌套函數的名字空間
- globals 全局變量,函數定義所在模塊的名字空間
- builtins 內置模塊的名字空間
10、函數進階---命名空間