作用域和名稱空間
阿新 • • 發佈:2018-12-10
名稱空間: 用來存放名字(變數, 函式名, 類名, 引入的模組名)的
1. 全域性名稱空間: 我們在py檔案中自己寫的變數, 函式.....
2. 內建名稱空間: 我們python直譯器提供好的一些內建內容(print, input....)
3. 區域性名稱空間: 在我們執行函式的時候.會產生一個區域性名稱空間. 放的是: 函式內部的內容(變數, 函式,類...)
名稱空間可能會有無數個, 區域性名稱空間而言. 相對是獨立的.一般互不干擾
作用域:
1. 全域性作用域: 內建+全域性
2. 區域性作用域: 區域性
globals() 檢視全域性作用域
locals() 檢視當前作用域
# a = 10 # # lst = [1,2,3,4] # # # 內建函式 # print("你好啊,我叫賽利亞") # # def chi(): # a = 10 # b = 20 # # # # 如果不呼叫chi() chi中的a和b都不會建立 # # 如果呼叫了chi() 會建立a,b # chi() # def chi(): # a = 10 # print(a) # # chi() # print(a) # 報錯 # def print(b): # pass # # a = 10 # def chi(): # print(a) # # chi() # 從全域性去找區域性 -> 找不到 # 區域性去找全域性 -> 可以找到 # 怎麼檢視全域性和區域性中的內容 # a = 10 # b = 20 # # def 今天又是星期五(): # pass # # # 檢視全域性作用域中的內容 # print(globals()) # globals 全域性作用域: 內建+全域性名稱空間 # ''' # {'__name__': '__main__', '__doc__': None, '__package__': None, # '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000000000265C080>, # '__spec__': None, '__annotations__': {}, # '__builtins__': <module 'builtins' (built-in)>, => print, input open # '__file__': 'D:/python_workspace_s18/day10 函式的進階/04 名稱空間和作用域.py', # '__cached__': None, # # 自己寫的. 全域性 # 'a': 10, 'b': 20, '今天又是星期五': <function 今天又是星期五 at 0x0000000001D42E18>} # ''' # def chi(): a = 20 b = 30 print(locals()) # 檢視當前作用域中的內容 print(globals()) # alex,老男孩兒, 武sir, 全域性作用域中的內容 chi() # print(locals()) # 全域性 # print(globals()) # 全域性