Python中的局部全局與全局變量主要體現(xiàn)在函數(shù)內(nèi)的變量與函數(shù)外的變量。
局部與全局就是變量的作用域(作用范圍)。
當你在函數(shù)內(nèi)部定義變量的時候,它們與函數(shù)外具有相同名稱的變量沒有任何關(guān)系,即變量對于函數(shù)來說是 局部 的。這也是這個變量的 作用域 。
所有的變量的作用域是它們被定義的塊,從它們被定義的地方開始。
使用局部變量:
輸出結(jié)果:
x is 50
接著,我們把數(shù)值 2 賦值給 x 。x是函數(shù)func的局部變量,它的作用域只能在函數(shù)內(nèi)部。所以,當我們改變 x 的值的時候,在主塊中定義的 x 不受影響。
在最后的 print 語句中,證明了主塊中的 x 的值確實受到影響。
使用 global 語句 聲明全局變量:
如果你想要為一個定義在函數(shù)外的變量賦值(即想要在函數(shù)內(nèi)改變主塊中的變量),那么我們就必須告訴Python這個變量不是局部的,而是 全局 的。我們可使用 global 關(guān)鍵字來聲明。如果不使用 global 是不能為定義在函數(shù)外的變量賦值的。
你可以使用定義在函數(shù)外的變量的值(假設(shè)在函數(shù)內(nèi)沒有同名的變量)。然而不建議這么做,因為這使得程序的讀者不清楚這個變量是在哪里定義的。使用 global 可以清楚的表明變量是在外面的塊定義的。
x is 50
Changed global x to 2
Value of x is 2
使用 global 關(guān)鍵字在函數(shù)內(nèi)聲明了變量 x 是全局的,因此,我們在函數(shù)內(nèi)為 x 賦值的時候,這個變化也反映在我們在主塊中使用 x 的值的時候。
你可以用同一個 global 指定多個全局變量。如:global x,y,z。
注意兩點:
1、如果想要在函數(shù)內(nèi)部去改變主塊中的的變量值,需要在函數(shù)內(nèi)部聲明這個變量為全局變量;
2、如果在函數(shù)內(nèi)部不使用 global 聲明與主塊中同名的變量,那么這個變量會覆蓋主塊的變量,在函數(shù)內(nèi)而不會使用全局變量,如例一。
聯(lián)系客服