python變數作用域

2021-10-24 02:59:41 字數 1272 閱讀 5842

作用域(scope)

所謂作用域(scope),就是變數的有效範圍,就是變數可以在哪個範圍以內使用。有些變數可以在整段**的任意位置使用,有些變數只能在函式內部使用,有些變數只能在 for 迴圈內部使用。

變數的作用域由變數的定義位置決定,在不同位置定義的變數,它的作用域是不一樣的。

區域性變數

在函式內部定義的變數,它的作用域也僅限於函式內部,出了函式就不能使用了,我們將這樣的變數稱為區域性變數(local variable)。當函式被執行時,python 會為其分配一塊臨時的儲存空間,所有在函式內部定義的變數,都會儲存在這塊空間中。而在函式執行完畢後,這塊臨時儲存空間隨即會被釋放並**,該空間中儲存的變數自然也就無法再被使用。

全域性變數

python 允許在所有函式的外部定義變數,這樣的變數稱為全域性變數(global variable)。

1、在函式體外定義的變數,一定是全域性變數

2、在函式體內定義全域性變數。即使用 global 關鍵字對變數進行修飾後,該變數就會變為全域性變數。(在使用 global 關鍵字修飾變數名時,不能直接給變數賦初值,否則會引發語法錯誤)

和區域性變數不同,全域性變數的預設作用域是整個程式,即全域性變數既可以在各個函式的外部使用,也可以在各函式內部使用。

獲取指定作用域範圍中的變數

1、globals()函式

globals() 函式為 python 的內建函式,它可以返回乙個包含全域性範圍內所有變數的字典,該字典中的每個鍵值對,鍵為變數名,值為該變數的值。通過呼叫 globals() 函式,我們可以得到乙個包含所有全域性變數的字典。並且,通過該字典,我們還可以訪問指定變數,甚至如果需要,還可以修改它的值。

2、locals()函式

locals() 函式也是 python 內建函式之一,通過呼叫該函式,我們可以得到乙個包含當前作用域內所有變數的字典。這裡所謂的「當前作用域」指的是,在函式內部呼叫 locals() 函式,會獲得包含所有區域性變數的字典;而在全域性范文內呼叫 locals() 函式,其功能和 globals() 函式相同。

當使用 locals() 函式獲得所有區域性變數組成的字典時,可以向 globals() 函式那樣,通過指定鍵訪問對應的變數值,但無法對變數值做修改。

3、vars(object)

vars() 函式也是 python 內建函式,其功能是返回乙個指定 object 物件範圍內所有變數組成的字典。如果不傳入object 引數,vars() 和 locals() 的作用完全相同。

python變數作用域

變數作用域 scope 在python中是乙個容易掉坑的地方。什麼是作用域 作用域簡單說就是乙個變數的命名空間。中變數被賦值的位置,就決定了哪些範圍的物件可以訪問這個變數,這個範圍就是命名空間。python賦值時生成了變數名,當然作用域也包括在內。python的作用域一共有4中,分別是 l loca...

Python 變數作用域

g global defchange global g g g change print g change print g 結果 global globalchange def function g function deflocalvar g local defglobalvar global g...

變數作用域 python

python 中,程式的變數並不是在哪個位置都可以訪問的,訪問許可權決定於這個變數是在 賦值的。變數的作用域決定了在哪一部分程式可以訪問哪個特定的變數名稱。python的作用域一共有4種,分別是 以 l e g b 的規則查詢,即 在區域性找不到,便會去區域性外的區域性找 例如閉包 再找不到就會去全...