python變數的作用域如何理解?

2021-10-11 18:57:41 字數 1781 閱讀 7140

變數作用域:

一般在函式體外定義的變數成為全域性變數,在函式內部定義的變數稱為區域性變數。

全域性變數所有作用域都可讀,區域性變數只能在本函式可讀

函式在讀取變數時,優先讀取函式本身自有的區域性變數,再去讀全域性變數

全域性變數

例如

name =

'tim'

#全域性變數

deff1()

: age =

18#區域性變數

print

(age,name)

deff2(

):age=

19#區域性變數

print

(age,name)

f1()

f2()

>>

>

18 tim

19 tim

在函式內部也可以定義全域性變數:

name =

'tim'

#全域性變數

deff1()

: age =

18#區域性變數

global name #定義全域性變數

name =

'eric'

print

(age,name)

f1()

print

(name)

全域性變數預設可讀,如果需要改變全域性變數的值,需要在函式內部使用global定義

特殊:列表,字典,可修改,但不能重新賦值,如果需要重新賦值,需要在函式內部使用global定義全域性變數

name =

['tim'

,'mike'

]#全域性變數

name1 =

['eric'

,'jeson'

]#全域性變數

name3 =

['tom'

,'jane'

]#全域性變數

deff1()

:'eric'

)print

('函式內name: %s'

%name)

name1 =

'123'

#重新賦值不可改變外部全域性變數的值

print

('函式內name1: %s'

%name1)

global name3 #如果需要重新給列表賦值,需要使用global定義全域性變數

name3 =

'123'

print

('函式內name3: %s'

%name3)

f1()

print

('函式外name: %s'

%name)

print

('函式外name1: %s'

%name1)

print

('函式外name3: %s'

%name3)

函式內name: [

'tim'

,'mike'

,'eric'

]函式內name1:

123函式內name3:

123函式外name:

['tim'

,'mike'

,'eric'

]函式外name1:

['eric'

,'jeson'

]函式外name3: 123

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 的規則查詢,即 在區域性找不到,便會去區域性外的區域性找 例如閉包 再找不到就會去全...