變數作用域 python

2021-08-13 01:03:04 字數 1067 閱讀 1062

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等)是不會引入新的作用域的,也就是說這這些語句內定義的變數,外部也可以訪問,如下**:

>>> if true:

... msg = 'i am from runoob'

...

>>> msg

'i am from runoob'

>>>

例項中 msg 變數定義在 if 語句塊中,但外部還是可以訪問的。

如果將 msg 定義在函式中,則它就是區域性變數,外部不能訪問:

>>> def test():

... msg_inner = 'i am from runoob'

...

>>> msg_inner

traceback (most recent call last):

file "", line 1, in

nameerror: name 'msg_inner' is not 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 local 區域性作用域 e enclosing 閉包函式外的函式中 g global 全域性作用域...