一. 什么是變量
變量就是以前學習的數學中常見的等式x = 3(x是變量,3是變量值),在編程中,變量不僅可以是數學,還可以是任意數據類型
二. 變量的命名規則
變量名必須是英文大小寫、數字和_的組合,不能以數字開頭,不能是關鍵字
a ✔
_name ✔
Atest1 ✔
1a ✘
那么,如何查看python中的關鍵字呢?
#導入模塊 import keyword #打印關鍵字列表 print(keyword.kwlist)
結果: ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
三. 變量、對象和引用
在python中,一切都是對象,一切都是對象的引用
舉個最簡單的例子:
a = 3
如圖所示,python將執行三個步驟來完成a = 3的賦值操作:
1. 創建也變量a
2. 創建一個對象(分配一塊內存),來存儲值3
3. 將變量與對象,通過指針連接起來,從變量到對象的連接稱之為引用(變量引用對象)
四. 類型屬於對象,而非變量
在python中,我們無需事先聲明變量的類型,變量類型是在運行過程中根據對象的類型自動決定的。
為了理解對象類型是如何使用的,請看我們對一個變量多次賦值后的結果:
a = 3 #整型 a = 'spam' #字符串 a = 1.2.3 #浮點型
在上面的例子中,a開始是一個整數,然后變成一個字符串,最后變成一個浮點數。看起來,a的類型發生了三次改變。
事實上,在python中,變量沒有類型,類型是屬於對象的。就像前面所說,a = 3,是變量a引用了對象3,而以上三條語句,實際上是變量a引用了不同類型的對象。
那么,對象的結構又是什么樣的?
如下圖所示,每個對象都包含了兩個頭部信息,一個是類型標志符,另一個是引用計數器。類型標志符標記了這個對象的類型,例如整數對象3,包含了值3和一個類型標志符(嚴格意義上,它是一個指向int的對象的指針),這就告訴python,這是一個整數對象。而'spam'字符串對象的標志符指向了一個字符串類型。由於對象記錄了它們的類型,變量的類型就沒有必要了。
五. 對象的垃圾回收
當變量a重新賦值時,它的前一個引用會發生什么變化呢?
a = 3 a = 'spam'
答案是,當變量a重新賦值給字符串'spam'時,它的上一個引用對象3馬上被回收了,對象的空間自動放入自由內存空間池,等待后來的對象使用。
在python內部是這樣實現這一功能的:它在每個對象內部分配了一個計數器,計數器記錄了當前指向該對象的引用的數目,一旦這個計算器被設置為0(即這個對象沒有被任何變量引用),該對象的內存空間就會自動回收。這種自動回收對象空間的機制就叫垃圾收集,它的最大好處是,可以再腳本中任意使用對象而不需要考慮釋放內存空間,在程序運行時,python將會清理那些不再使用的空間。