day16-內(nèi)存管理和拷貝

day16-內(nèi)存管理和拷貝

一、多繼承

python中的類支持多繼承

class 子類(父類1,父類2,...)

只能繼承第一個父類的對象屬性


二、運(yùn)算符的重載

1.運(yùn)算符

python中所有的數(shù)據(jù)類型本質(zhì)都是類,所有的數(shù)據(jù)本質(zhì)都是對象

在使用運(yùn)算符對數(shù)據(jù)進(jìn)行操作的時候,實質(zhì)是調(diào)用運(yùn)算符對應(yīng)的魔法方法

運(yùn)算符前面的數(shù)據(jù)類型決定了函數(shù)調(diào)用哪個類中對應(yīng)的魔法方法

每個運(yùn)算符都有自己固定的魔法方法,看某種類型的數(shù)據(jù)是否支持某種運(yùn)算符就看這個類中有沒有實現(xiàn)對應(yīng)的魔法方法。 例如:+ —— __add__


三、內(nèi)存管理

手動內(nèi)存管理:

內(nèi)存分為棧區(qū)間和堆區(qū)間,棧區(qū)間中的內(nèi)存是自動開辟和釋放;堆上的內(nèi)存需要程序員學(xué)代碼申請釋放

1.內(nèi)存的開辟

  • python中所有的類型都是類,所以所有的數(shù)據(jù)都是對象,對象都是保存在堆區(qū)間,變量是保存在棧區(qū)間
  • 變量中實際存儲的是堆中的數(shù)據(jù)的地址。(變量的本質(zhì)就是指針)

2.內(nèi)存的釋放

python中內(nèi)存的釋放采用的是'垃圾回收機(jī)制'自動釋放

  • 垃圾回收機(jī)制:
    • 1)看一個數(shù)據(jù)是否需要銷毀(是否需要回收),就看這個對象的引用計數(shù)是否為0(引用:保存對象地址的數(shù)據(jù))
    • 2)如果這個對象的引用計數(shù)不為0,就假設(shè)當(dāng)前對象消失,然后看會不會有其他對象因為它的消失引起計數(shù)變量為零,如果有,就將另外一個對象也回收(循環(huán)引用解環(huán))
  • 注意:用一個變量給另一個變量賦值,實質(zhì)賦的是地址

四、淺拷貝和深拷貝

使用變量的三種情況

  • 直接賦值:賦的是地址,賦完值后兩個變量一模一樣 變量1 = 變量2
  • 淺拷貝:直接賦值被拷貝的數(shù)據(jù)產(chǎn)生一個個新的地址,將新的地址賦給變量;如果被拷貝的對象中有子對象,子對象不會被復(fù)制 列表[:]、列表.copy()、copy.copy()
  • 深拷貝:直接復(fù)制被拷貝的數(shù)據(jù),產(chǎn)生一個新的地址,將新的地址賦給變量;如果被拷貝的對象中有子對象,子對象也會被復(fù)制 copy.deepcopy(數(shù)據(jù))
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容