python 區域性變數和全域性變數

2022-05-23 17:48:09 字數 927 閱讀 1807

在python中全域性變數可以作用於所有域,而函式內部呼叫時會優先使用區域性變數,如果搜尋不到區域性變數就會在全域性中搜尋相同的變數

當然,以上並不意味著我們不能在函式內部使用全域性變數。python 的作用域規則是, 變數的建立總是會建立乙個新的區域性變數但是變數的訪問(包括修改)在區域性作用域查詢然後是整個外層作用域來尋找匹配。所以如果修改foo函式來列印全部變數,結果將是我們希望的那樣:

python12

345>>>a_string="this is a global variable"

>>>deffoo():

...printa_string# 1

>>>foo()

this isaglobalvariable

另一方面,如果嘗試在函式裡給全域性變數賦值,結果並不是我們想要的那樣:

python12

3456

78>>>a_string="this is a global variable"

>>>deffoo():

...a_string="test"# 1

...printlocals()

>>>foo()

>>>a_string# 2

'this is a global variable'

從上面**可見,全部變數可以被訪問(如果是可變型別,甚至可以被修改)但是(預設)不能被賦值。在函式#1處,實際上是建立了乙個和全域性變數相同名字的區域性變數,並且「覆蓋」了全域性變數。通過在函式foo中列印區域性命名空間可以印證這一點,並且發現區域性命名空間有了一項資料。在#2處的輸出可以看到,全域性命名空間裡變數a_string的值並沒有改變。

print locals()列印區域性變數

print globals()列印全域性變數

python區域性變數和全域性變數

name gongwei 要在函式裡修改全域性變數,需要用globle home earth china cq def change name home 地球 注意只有字串和單獨數值在區域性變數中修改全域性變數要用globle輔助,其他如列表 字典可以直接修改 global name name xu...

python區域性變數和全域性變數

主要內容 1.命名空間,區域性命名空間,全域性命名空間,作 域,載入順序.2.函式的巢狀 3.gloabal,nonlocal關鍵字 1.命名空間 也就是全域性和區域性 命名空間分類 1 全域性命名空間,py檔案內,函式外宣告的變數 2 區域性命名空間 在函式裡面宣告的變數 3 內建命名空間 pyt...

python全域性變數 區域性變數

定義在函式內的變數有區域性作用域,在乙個模組中最高端別的變數有全域性作用域。全域性變數的乙個特徵是除非被刪除掉,否則它們的存活到指令碼執行結束,且對於所有的函式,它們的值都是可以訪問的。global str global string def foo local str local string r...