變數和全域性變數-Python基礎篇
阿新 • • 發佈:2021-10-02
1、全域性變數:宣告在函式外面的變數。
2、區域性變數:宣告這函式內部的變數。
函式在使用變數時優先使用區域性變數,沒有區域性變數時才會使用全域性變數。
如果想要修改全域性變數必須使用關鍵字:global
# 全域性變數 a = 100 def test1(): # 區域性變數 a = 1 b = 8 print('a=', a) # 使用的是區域性變數 print('b=', b) test1() ''' a= 1 b= 8 ''' def test2(): # 區域性變數 b = 8 print('a=', a) # 使用的是全域性變數,沒宣告區域性a變數 print('b=', b) test2() ''' a= 100 b= 8 ''' # 如果我們要改變全域性變數的值 def test3(): # a=90 # print(a) # 仍然是100 global a # 必須使用global a = 90 print(a) # 90 test3()
有些資料型別作為全域性變數是可以不用global,也可以這函式內部進行修改的,這就涉及到可變與不可變變數。
1、不可變變數:當改變變數時地址發生了變化。
型別:int,str,float,bool,tuple
2、可變變數:變數這值發生了改變,但是地址沒有變化的。
型別:list,dict,set
# 不可變變數 a = 100 print(id(a)) # 140712140542736 a = 90 print(id(a)) # 140712140542416 s = 'abc' print(id(s)) # 2429653660720 s = 'xyz' print(id(s)) # 2429653742000 print('*-' * 20) # 可變變數 l1 = [1, 2, 3] print(id(l1)) # 2974649220160 l1.append(4) print(id(l1)) #2974649220160
可變變數可以不用global修改全域性變數
book = ['西遊記', '紅樓夢'] def add_book(s): book.append(s) # 修改了全域性變數 print(book) add_book("水滸傳") # ['西遊記', '紅樓夢', '水滸傳']