python物件模型

來源:互聯網
上載者:User

標籤:記憶體位址   nbsp   python   空值   int   額外   深拷貝   模型   函數   

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物件模型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.