python學習筆記 變數作用域

2021-10-08 10:58:57 字數 1432 閱讀 1015

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