1. 程式人生 > >10、函數進階---命名空間

10、函數進階---命名空間

什麽 名字空間 舉例 int oca font 內置模塊 範圍 全局變量

又名name space, 顧名思義就是存放名字的地方,存什麽名字呢?舉例說明,若變量x=1,1存放於內存中,那名字x存放在哪裏呢?名稱空間正是存放名字x與1綁定關系的地方 名稱空間共3種,分別如下
  • locals: 是函數內的名稱空間,包括局部變量和形參
  • globals: 全局變量,函數定義所在模塊的名字空間
  • builtins: 內置模塊的名字空間
不同變量的作用域不同就是由這個變量所在的命名空間決定的。 作用域即範圍
  • 全局範圍:全局存活,全局有效
  • 局部範圍:臨時存活,局部有效
查看作用域方法 globals(),locals() 作用域的查找順序
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、函數進階---命名空間