python中全域性變數與區域性變數
阿新 • • 發佈:2022-03-23
python中全域性變數與區域性變數
- 區域性變數就是定義在一個函式體內部的變數
- 全域性變數是定義在外面的變數
比如
1 a = 1 2 def f(): 3 b = 2
其中a
就是全域性變數,而b
是區域性變數。區域性變數只在函式體內部有效,出了函式體,外面是訪問不到的,而全域性變數則對下面的程式碼都有效。
在函式體內部使用全域性變數
全域性變數可以直接在函式體內容部使用的,你可以直接訪問,但是注意的是,如果對於不可變型別的資料,如果在函式裡面進行了賦值操作,則對外面的全域性變數不產生影響,因為相當於新建了一個區域性變數,只是名字和全域性一樣,而對於可變型別,如果使用賦值語句,同樣對外部不產生影響,但是使用方法的話就會對外部產生影響。
如下面的程式碼:
1 g_b = 3;g_l1 = [1,2];g_l2 = [1,2,3] 2 def t1(): 3 g_b = 2 4 g_l1 =[] 5 g_l2.append(7) 6 t1(g_b,g_l1,g_l2) 7 print(g_b,g_l1,g_l2)
global關鍵字
上面說到,如果使用的是賦值語句,在函式內部相當於新建了一個變數,並且重新給了指向,但是有時候我們想把這個變數就是外部的那個全域性變數,在賦值操作的時候,就是對全域性變數給了重新的指向,這個時候可以通過global關鍵字表示我在函式裡面的這個變數是使用的全域性那個。使用方法如下:
1 g_b = 3 2 3 4 def t1(): 5 global g_b 6 g_b = 2 7 8 t1() 9 print(g_b) # >> 2
這個時候你會發現全域性變數g_b也重新指向了,這是因為global gb
表示指定了函式中的g_b
就是外面的那個。