命名空間

1.做用域:變量或者函數的聲明週期
  1.全局命名空間--> 咱們直接在py文件中, 函數外聲明的變量都屬於全局命名空間
  2.局部命名空間--> 在函數中聲明的變量會放在局部命名空間
  3.內置命名空間--> 存放python解釋器爲咱們提供的名字, list, tuple, str, int這些都是內置命名空間
  # 最開始開闢一個本身的命名空間 -內置命名空間
  #加載順序:內置=>全局=>局部
  #取值順序: 局部==>全局==>內置
  globals() # 查看全局做用域中的內容
  locals() #查看當前做用域的內容

2.global nonlocal 對於外層變量 若是沒有相關關鍵字修飾的話 只能讀 不能改變
  global a # 表示當前做用域使用的a是全局中的變量
  這種 改變是危險的 共享的改變是危險的
  還能夠定義一個全局的a(強制的)
  nonlocal a # 找的是局部裏面,離他最近的上層的那個變量
  直到找到爲止python

 1 # 7, 下面代碼成立麼?若是不成立爲何報錯?怎麼解決?
 2 # 7.1
 3 #a = 2
 4 # def wrapper():
 5 #     print(a)
 6 # wrapper()
 7 # 不報錯 調用順序是局部、全局、內置
 8 # 7.2
 9 # a = 2
10 # def wrapper():
11 #     global a
12 #     a += 1
13 #     print(a)
14 #
15 #
16 # wrapper()
17 # 這個報錯 添加一個關鍵字 global,只能這個全局變量 不能改變
18 # 要改變的話 須要加 關鍵字global
19 # 7.3
20 # def wrapper():
21 #     a = 1
22 #     def inner():
23 #         nonlocal a
24 #         print(a)
25 # 
26 #     inner()
27 # wrapper()
28 # 不報錯 讀這個變量是能夠的
29 # 7.4
30 # def wrapper():
31 #             a = 1
32 #             def inner():
33 #                 a += 1
34 #                 print(a)
35 #             inner()
36 #     wrapper()
View Code
相關文章
相關標籤/搜索