在python 中全局變量與局部變量的區別是作用域不同。一般局部變量聲明在方法、類中,作用範圍僅限於方法體、類中。而全局變量沒有這個限制。
1.全局變量作用於整個py文件;
2.局部變量作用域方法體、類聲明範圍內;
如下代碼:
'''
全局變量 與本地變量的測試
'''
# 定義全局變量 num
def add():
num2=12
print("局部變量 num2:",num2)
#global num #聲明這裏使用的是全局變量,有指定引用的意思
num=2
num=1
print("全局變量,原始num:",num)
add();
print("運算後num:",num)
A.方法中使用全局變量,與順序無關;
B.方法中改變全局變量的值,對於傳值參數可使用關鍵字“global”;
C.方法體外使用局部變量,會產生異常;
關於變量作用於的關鍵字nonlocal
從字面意思是指【非局部變量】,【python 3.x】使用方法如下代碼:
def fn():
num = 1;
def fn1():
nonlocal num
num+=1
return num
return fn1();
print("nonlocal 使用測試:",fn())
結果:
上面代碼中 num不是全局變量,在不使用nonlocal聲明的前提下,運行時產生異常。使用nonlocal聲明的意義在於,指定num非方法fn1中聲明的。編譯器查找的範圍擴展到fn。