文章目錄
- 1.局部變量和全局變量
- 2.局部變量
- 2.1 局部變量的作用
- 2.2 局部變量的生命周期
- 3. 全局變量
- 3.1 函數不能直接修改`全局變量的引用`
- 3.2 在函數內部修改全局變量的值
- 3.3 全局變量定義的位置
- 3.4 全局變量命名的建議
1.局部變量和全局變量
(1)局部變量 是在 函數內部 定義的變量,只能在函數內部使用
(2)全局變量 是在 函數外部定義 的變量(沒有定義在某一個函數內),所有函數 內部 都可以使用這個變量
(3)提示:在其他的開發語言中,大多 不推薦使用全局變量 —— 可變范圍太大,導致程序不好維護!
2.局部變量
(1)局部變量 是在 函數內部 定義的變量,只能在函數內部使用
(2)函數執行結束后,函數內部的局部變量,就會被系統回收
(3)不同的函數,可以定義相同的名字的局部變量,但是 彼此之間 不會產生影響
2.1 局部變量的作用
- 在函數內部使用,臨時 保存 函數內部需要使用的數據
def demo1():num = 10print(num)num = 20print("修改后 %d" % num)def demo2():num = 100print(num)demo1()
demo2()print("over")
2.2 局部變量的生命周期
(1)所謂 生命周期 就是變量從 被創建 到 被系統回收 的過程
(2)局部變量 在 函數執行時 才會被創建
(3)函數執行結束后 局部變量 被系統回收
(4)局部變量在生命周期 內,可以用來存儲 函數內部臨時使用到的數據
3. 全局變量
(1)全局變量 是在 函數外部定義 的變量,在所有函數內部都可以使用這個變量
# 定義一個全局變量
num = 10def demo1():print(num)def demo2():print(num)demo1() //10
demo2() //10
(2)注意:函數執行時,需要處理變量時 會:
①首先 查找 函數內部 是否存在 指定名稱 的局部變量,如果有,直接使用
②如果沒有,查找 函數外部 是否存在 指定名稱 的全局變量,如果有,直接使用
③如果還沒有,程序報錯!
3.1 函數不能直接修改全局變量的引用
(1)全局變量 是在 函數外部定義 的變量(沒有定義在某一個函數內),所有函數 內部 都可以使用這個變量
提示:在其他的開發語言中,大多 不推薦使用全局變量 —— 可變范圍太大,導致程序不好維護!
(2)在函數內部,可以 通過全局變量的引用獲取對應的數據
(3)但是,不允許直接修改全局變量的引用(即不能使用賦值語句修改全局變量的值)
num = 10def demo1():# 只是定義了一個局部變量,不會修改到全局變量,只是變量名相同而已num = 100print(num)def demo2():print(num)demo1()//100
demo2()//10print("over")
注意:只是在函數內部定義了一個局部變量而已,只是變量名相同 —— 在函數內部不能直接修改全局變量的值
3.2 在函數內部修改全局變量的值
- 如果在函數中需要修改全局變量,需要使用
global
進行聲明
num = 10def demo1():# global 關鍵字,告訴 Python 解釋器 num 是一個全局變量global numnum = 100print(num)def demo2():print(num)demo1()//100
demo2()//100print("over")
3.3 全局變量定義的位置
- 為了保證所有的函數都能夠正確使用到全局變量,應該 將全局變量定義在其他函數的上方
a = 10def demo():print("%d" % a)print("%d" % b)print("%d" % c)b = 20
demo()
c = 30
注意
- 由于全局變量 c,是在調用函數之后,才定義的,在執行函數時,變量還沒有定義,所以程序會報錯!
3.4 全局變量命名的建議
- 為了避免局部變量和全局變量出現混淆,在定義全局變量時,有些公司會有一些開發要求,例如:
- 全局變量名前應該增加
g_
或者gl_
的前綴
提示:具體的要求格式,各公司要求可能會有些差異