參考http://www.runoob.com/python3/python3-function.htmlhtml
Python 中,程序的變量並非在哪一個位置均可以訪問的,訪問權限決定於這個變量是在哪裏賦值的。python
變量的做用域決定了在哪一部分程序能夠訪問哪一個特定的變量名稱。Python的做用域一共有4種,分別是:閉包
以 L –> E –> G –>B 的規則查找,即:在局部找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,再者去內建中找。函數
Python 中只有模塊(module),類(class)以及函數(def、lambda)纔會引入新的做用域,例如只定義在函數中,就是局部變量,外部就不能訪問。ui
其它的代碼塊(如 if/elif/else/、try/except、for/while等)是不會引入新的做用域的,也就是說這些語句內定義的變量,外部也能夠訪問。3d
total = 0 #全局變量
def sum(arg1,arg2):
total = arg1 + arg2 #total在這裏是局部變量
print("函數內是局部變量: ",total)
return total
sum(10,20) #調用sum函數
print("函數外是全局變量: ",total)
#內部做用域想要修改外邊做用域的變量,須要用到global和nonlocal關鍵字num = 1def fun1(): global num #用global關鍵字聲明 print(num) num = 123 print(num)fun1()print(num)def outer(): num = 10 def inner(): nonlocal num num = 100 print(num) inner() print(num)outer()