Python中全域性變數與區域性變數

2021-08-21 16:57:34 字數 2956 閱讀 1440

1.定義

區域性變數:在函式中定義的變數一般只能在該函式內部使用,這些只能在程式的特定部分使用

全域性變數:在乙個檔案頂部定義的變數,可以供該檔案中任意函式呼叫

全域性變數與區域性變數兩者的本質區別就是在於作用域。全域性變數是在整個py檔案中宣告,全域性範圍內都可以訪問。區域性變數是在某個函式中宣告的,只能在該函式中呼叫它,如果試圖在超出範圍的地方呼叫,程式就爆掉了

如果在函式內部定義與某個全域性變數一樣名稱的區域性變數,就可能會導致意外的效果,可能不是你期望的。因此不建議這樣使用,這樣會使得程式很不健全

2.例項

2.1優先讀取區域性變數,能讀取全域性變數,無法對全域性變數重新賦值

name='全域性變數'

def change_name():

name='區域性變數'

print('change_name',name)

change_name()

print(name)

輸出:

chang_name 區域性變數

全域性變數

2.2global語句可以把區域性變數強制生成全域性變數,如果函式沒有被呼叫的話 global是沒有用的

name = "xixi"

def s1():

global name #已經宣告,name就是全域性的那個變數xixi

name = "yueyue" #修改全域性的變數為yueyue

print('列印出', name)

def s2():

print('列印出', name)

s1()

s2()

輸出:

列印出 yueyue

列印出 yueyue

2.3 對於可變型別,可以對內部元素進行操作

name = ["wangwang","shishi"]

def s1():

print('列印出', name)

s1()

列印出 ['wangwang', 'shishi', 'yaoyao']

######## 全域性變數變數名大寫

######## 區域性變數變數名小寫

2.4 函式跟函式之間巢狀變數

name = '全域性變數'          #第一步執行

def s1():

name = "巢狀1" #第三步執行

print(name) #第四步執行(輸出第一行)

def s2():

name = "巢狀2" #第六步執行

print(name) #第七步執行(輸出第二行)

def s3():

name = '巢狀3' #第十步執行

print(name) #第十一步執行(輸出第四行)

print(name) #第八步執行(輸出第三行)

s3() #第九步執行

s2() #第五步執行

print(name) #第十二步執行(輸出第五行)

s1() #第二步執行

複製**

輸出:

巢狀1巢狀2

巢狀2巢狀3

巢狀12.5nonlocal指定上一級變數,如果沒有就繼續往上直到找到為止

name = "全域性變數"

def s1():

name = "西西"

def ss1():

nonlocal name #把上一級變數name=西西改為name=月月

name = "月月"

ss1()

print(name)

print(name)

s1()

print(name)

輸出:

全域性變數

月月全域性變數

2.6 屬性拆分詳解

name = '全域性變數'          #第1步執行

def s1(): #第2步執行

name = "巢狀1" #第4.1步執行

print(name) #第4.2步執行(輸出第二行)

def s2(): #第4.3步執行

name = "巢狀2" #第4.4.1步執行

print(name) #第4.4.2步執行(輸出第三行)

def s3(): #第4.4.3步執行

name = '巢狀3' #第4.4.5.1步執行執行

print(name) #第4.4.5.2步執行(輸出第五行)

print(name) #第4.4.4步執行(輸出第四行)

s3() #第第4.4.5步執行步執行

s2() #第4.4步執行

print(name) #第4.5步執行(輸出第六行)

print(name) #第3步執行(輸出第一行)

s1() #第4步執行

print(name) #第5步執行(輸出第七

輸出:

全域性變數

巢狀1巢狀2

巢狀2巢狀3

巢狀1全域性變數

javascript複習 全域性變數與區域性變數

全域性變數 global variable 可以在宣告它的指令碼中任何位置引用它。區域性變數 local variable 只存在於對它做出宣告的函式內部。因此在函式內部我們既可以使用全域性變數也可以使用這個函式的區域性變數。這可能會導致一些問題。如果在函式內部不小心使用了全域性變數的名字,即使本意...

static全域性 區域性變數,全域性變數及區域性變數

1 static變數和全域性變數都是分配在 靜態儲存區 2 static全域性變數 static區域性變數 全域性變數和區域性變數區別 他們都是分配在 靜態儲存區內,都是在程式開始的時候初始化的,他們的區別是作用域不同,static全域性變數作用域是在申明所在的檔案中,而全域性變數是全域性的,其他檔...

python基礎學習十一 全域性變數與區域性變數

變數作用域指的是變數生效的範圍,主要分為兩類 區域性變數和全域性變數。所謂區域性變數是定義在函式體內部的變數,即只在函式體內部生效。def testa a 100print a testa 100 print a 報錯 name a is not defined變數a是定義在 testa 函式內部的...