1. 程式人生 > >python對象模型

python對象模型

不變 兩個 epc 是個 頭部 若是 原來 創建 -s

python的對象
python對象由兩部分構成:類型標識符(標識對象類型)、引用計數器(垃圾回收機制需要)
每一個對象都有兩個標準的頭部信息:一個類型標識符去標識這個對象的類型;一個引用的計數器,用來決定是不是可以回收這個對象;
對象和變量的關系
1、變量(實質是指針)和對象分別保存在內存的不同部分
2、變量總是指向對象,並且絕不會指向其他變量上,但是更大的對象可能連接到其他的對象;
3、在Python內部,作為一種優化,Python預先緩存了一些不變的對象並對其進行復用;
  例如:None對象,None是python定義來表示空值,內存中有一塊地址保存它
對象的類別
可變對象與不可變對象
可變對象一旦創建之後還可調用函數改變但是地址不會發生改變,即該變量指向的還是原來的對象。
有 :list,dictionary,set
不可變對象則相反,創建之後不能更改,如果調用更改函數會返回一個新的對象。
有:int,string,float,tuple
額外知識:對象的深拷貝與淺拷貝


淺拷貝:只是將引用指向同一塊內存地址,
深拷貝:新創建一塊內存用於儲存被拷貝對象的值。
    註意:深拷貝像文件夾一樣層層遞歸性,即每當發現裏面是個引用,便依次深拷貝
代碼:
淺拷貝:a=b
深拷貝:a=copy.deepcopy(b)
第一層的拷貝:a=copy.copy(b),註意的是copy.copy函數會根據當前拷貝對象類型進行拷貝操作的選擇。
                若是不可變類型,則轉為淺拷貝。若是可變類型,則進行深拷貝(但是並不具有遞歸效果)

python對象模型