1. 程式人生 > >python中的變量與對象

python中的變量與對象

con 1.2 src 計算 exc 是什麽 關鍵字 大小寫 簡單

一. 什麽是變量

變量就是以前學習的數學中常見的等式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將會清理那些不再使用的空間。

python中的變量與對象