python3學習筆記12(變量做用域)

變量做用域

參考http://www.runoob.com/python3/python3-function.htmlhtml

Python 中,程序的變量並非在哪一個位置均可以訪問的,訪問權限決定於這個變量是在哪裏賦值的。python

變量的做用域決定了在哪一部分程序能夠訪問哪一個特定的變量名稱。Python的做用域一共有4種,分別是:閉包

  • L (Local) 局部做用域
  • E (Enclosing) 閉包函數外的函數中
  • G (Global) 全局做用域
  • B (Built-in) 內建做用域

以 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關鍵字

#內部做用域想要修改外邊做用域的變量,須要用到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()
相關文章
相關標籤/搜索