你可以這樣來理解,在做一個大的項目,裏面有50個人在做,在這個公司,突然有個部分任務很急,公司的50個人也忙得不可開交,沒辦法,所以只能從外面請來了5個人來管理。
到最後,整個大的項目完成了,那5個人走了,原有的公司還是50人。只是在項目過程中的某一部分有55個人。
全局變量就相當於,公司的55個人,而局部變量了,就相當於是那5個人。
在發一個代碼:你一看就知道是怎麼回事了:
def func(x):
print 'x is', x .......①:第一次打印的值
x = 2
print 'Changed local x to', x ........②:第二次打印的值
x = 50
func(x)
print 'x is still', x ..........③:第三次打印的值
輸出 的結果是
①: x is 50
②:Changed local x to 2
③:x is still 50
它如何工作
在函數中,我們第一次使用x的 值 的時候,Python使用函數聲明的形參的值。
接下來,我們把值2賦給x。x是函數的局部變量。所以,當我們在函數內改變x的值的時候,在
主塊中定義的x不受影響。
在最後一個print語句中,我們證明了主塊中的x的值確實沒有受到影響。
使用global語句
如果你想要爲一個定義在函數外的變量賦值,那麼你就得告訴Python這個變量名不是局部的,
而是 全局 的。我們使用global語句完成這一功能。沒有global語句,是不可能爲定義在函數外
的變量賦值的。
你可以使用定義在函數外的變量的值(假設在函數內沒有同名的變量)。然而,我並不鼓勵你
這樣做,並且你應該儘量避免這樣做,因爲這使得程序的讀者會不清楚這個變量是在哪裏定義
的。使用global語句可以清楚地表明變量是在外面的塊定義的。