python 中,程式的變數並不是在哪個位置都可以訪問的,訪問許可權決定於這個變數是在**賦值的。
變數的作用域決定了在哪一部分程式可以訪問哪個特定的變數名稱。python的作用域一共有4種,分別是:
以 l –> e –> g –>b 的規則查詢,即:在區域性找不到,便會去區域性外的區域性找(例如閉包),再找不到就會去全域性找,再者去內建中找。
x=int
(2.9
)# 內建作用域
g_count =0
# 全域性作用域
defouter
():o_count =1
# 閉包函式外的函式中
definner
():i_count =2
# 區域性作用域
python 中只有模組(module),類(class)以及函式(def、lambda)才會引入新的作用域,其它的**塊(如 if/elif/else/、try/except、for/while等)是不會引入新的作用域的,也就是說這些語句內定義的變數,外部也可以訪問,這點和c\c++具有的以{}定義的塊級作用域不同。如下**:
>>>iftrue
:...
msg
='i am from runoob'
...>>>
msg'i am from runoob'
>>>
例項中 msg 變數定義在 if 語句塊中,但外部還是可以訪問的。
如果將 msg 定義在函式中,則它就是區域性變數,外部不能訪問:
>>>deftest
():...
msg_inner
='i am from runoob'
...>>>
msg_inner
traceback
(most recent call
last
):file"",
line 1,
innameerror
:name
'msg_inner'
isnot
defined
>>>
從報錯的資訊上看,說明了 msg_inner 未定義,無法使用,因為它是區域性變數,只有在函式內可以使用。
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 的規則查詢,即 在區域性找不到,便會去區域性外的區域性找 例如閉包 再找不到就會去全...