變量作用域
Python 中,程序的變量並不是在哪個位置都可以訪問的,訪問權限決定於這個變量是在哪里賦值的。
變量的作用域決定了在哪一部分程序可以訪問哪個特定的變量名稱。Python的作用域一共有4種,分別是:
- L (Local) 局部作用域
- E (Enclosing) 閉包函數外的函數中
- G (Global) 全局作用域
- B (Built-in) 內建作用域
以 L –> E –> G –>B 的規則查找,即:在局部找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,再者去內建中找。
各作用域關系如圖:

內建作用域:
a = int(3.14) #int函數在內建作用域中
NAME='John' #NAME在全局作用域中 def fun(): name='July' #閉包函數外的函數域 def fun2(): name='Jack' #局部作用域 print(name) fun() #'Jack'
Python 中只有模塊(module),類(class)以及函數(def、lambda)才會引入新的作用域,其它的代碼塊(如 if/elif/else/、try/except、for/while等)是不會引入新的作用域的,也就是說這這些語句內定義的變量,外部也可以訪問:
if True: a=123 print(a) #-------------- 123
