1區域性作用域
輸入
def v1():
a = 5 #區域性變數,只在函式內部使用
print(a)
v1()
print(a) #報錯,無法再函式外部訪問區域性變數
輸出
5
traceback (most recent call last):
file "************", line 6, in print(a)
nameerror: name 'a' is not defined
2閉包作用域
def out1():
a = 7 #閉包
def in1():
b = 8 #區域性
print(a) #可以輸出,閉包作用域的範圍大於區域性作用域的範圍
print(b) #報錯,閉包中無法訪問區域性變數,b的作用域僅僅在4,5兩行
in1()
out1()
3全域性作用域
輸入
age = 12 #全域性變數,擁有 全域性作用域,可以在任何位置訪問到
def person():
name = "tom"
print(name)
print(age) #區域性中可以訪問全域性變數age
person()
輸出
tom
12
4系統內建變數的作用域
系統固定模組中的,如print(),可以在任何位置訪問
查詢規則:legb
輸入
sum1 = 0
def sum(a,b):
sum1 = a + b
print(sum1,"區域性變數") #之所以列印的不是0是因為先從區域性中找的
return sum1
sum(4,5.)
print(sum1,"全域性變數")
輸出
9.0 區域性變數
0 全域性變數
若想通過全域性變數改變全域性變數,則可以使用global關鍵字,例如:
輸入
sum1 = 0
def sum(a,b):
global sum1 #讓區域性使用全域性變數而不是重新定義變數
sum1 = a + b #通過區域性變數sum1改變全域性變數sum1的值
print(sum1,"區域性變數")
return sum1
sum(4,5.)
print(sum1,"全域性變數")
輸出
9.0 區域性變數
9.0 全域性變數
注意:只有模組,類,和函式才會產生新的作用域 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 的規則查詢,即 在區域性找不到,便會去區域性外的區域性找 例如閉包 再找不到就會去全...