Python的變數
概念
Python變數是用於儲存值的保留記憶體位置。換句話說,python程式中的變數將資料提供給計算機進行處理。
Python中的每個值都有一個數據型別。Python中不同的資料型別是Numbers,List,Tuple,Strings,Dictionary等。
變數可以用任何名稱宣告,甚至可以用a,aa,abc等字母表來宣告。
變數名稱規範遵循Python識別符號規範,即字母數字下劃線混合,但不能數字開頭。用下劃線開頭表示特殊含義。
Python3支援Unicode作為變數名,即中文變數名也支援,但不推薦。
>>> 名字='王小明' #符合語法,但不推薦 >>> print(名字) 王小明
推薦的命名習慣
常量下劃線連大寫如CAPS_WITH_UNDER;
類或異常用首字母大寫駝峰式如CapWords;
其他用下劃線連小寫lower_with_under;
如果是內部使用那麼下劃線開頭_lower_with_under。
賦值
Python 中的變數不需要宣告。每個變數在使用前都必須賦值,變數賦值以後該變數才會被建立。
在 Python 中,變數就是變數,它沒有型別,我們所說的"型別"是變數所指的記憶體中物件的型別。
等號(=)用來給變數賦值。
等號(=)運算子左邊是一個變數名,等號(=)運算子右邊是儲存在變數中的值。
Python允許你同時為多個變數賦值。
>>> a,b=1,'a' >>> x=y=3 >>> a,b,x,y (1, 'a', 3, 3)
全域性變數和區域性變數
所有變數都只能在其所在的程式碼塊或其子程式碼塊中使用,在整個模組或程式中都能使用的變數成為全域性變數,其他都視為區域性變數
a=100 def func(): b=10 a=a+b print(a,b) #報錯,b沒有定義,子程式碼塊中定義的變數無法在父層程式碼中使用
注意以上情況對於流程控制產生的程式碼塊不適用,例如
a=100 i=100 for i in range(3): b=10 a=a+b print(a,b,i) #正確執行,得到130 10 2
a=100 if True: b=10 a=a+b print(a,b) #正確執行,得到110 10
Python會優先使用最近的區域性變數,同名的更高層級變數和全域性變數將被忽視
a=100 def func(): a=99 print(a) #輸出99 func() print(a) #輸出100而不是99
區域性程式碼塊中可以使用global來建立全域性變數
a=100 def func(): global a a=99 print(a) #輸出99 func() print(a) #輸出99,a已經被覆蓋
刪除變數
使用del刪除,刪除後變數將變為未定義,不能再使用.
>>> del a >>> a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined
None空變數
空變量表示變數存在,但未賦值
def fn(): global a return b=fn() print(b) #輸出None print(a) #報錯NameError
變數的型別
變數有很多種型別如int、str、list等,但同一變數改變型別是很危險的,應嚴格避免