1. 程式人生 > >python中的變數與物件

python中的變數與物件

在python中,一切變數都是物件的引用

舉個例子:

a=3

內部執行過程如下圖:
這裡寫圖片描述

如圖所示,python內部分為3個步驟完成a=3的賦值操作:

  1. 建立變數a
  2. 建立一個物件(分配一塊記憶體)儲存值3
  3. 將變數與物件通過指標連線起來

基於此內部機制,故python在定義變數的時候無需先宣告變數的型別,變數型別是在執行過程中根據物件型別自動決定的,在過程中可以改變變數的型別即使變數引用不同型別的物件即可

例如:

a=3        #整型
a='sean'   #字串型
a=3.14     #浮點型

在此例中變數a分別引用整型物件3、字串型物件sean、浮點型物件3.14

由此可總結出,變數沒有型別,型別是屬於物件的

既然物件有型別,那麼物件又是如何儲存型別的呢?下面說明一下物件的詳細結構。

物件結構如下圖:
這裡寫圖片描述

如圖所示,物件結構分為三個部分,存值區,型別標誌符和計數器。型別標誌符(嚴格意義上它是一個指向int物件的指標)標記了這個物件的型別。

值得注意的是計數器部分,計數器數值記錄了引用該物件的變數數,當計數器值為0時,即沒有變數引用時,該物件被回收釋放記憶體空間。